name: Releases (Legacy) on: release: types: [published] jobs: version: runs-on: ubuntu-latest outputs: build_number: ${{ steps.tag_info.outputs.build_number }} version: ${{ steps.tag_info.outputs.version }} steps: - name: Extract version and build number id: tag_info shell: bash run: | TAG_NAME="${GITHUB_REF#refs/tags/}" BUILD_NUMBER=$(echo "$TAG_NAME" | cut -d'-' -f2) VERSION=$(echo "$TAG_NAME" | cut -d'-' -f3) # Set outputs for use in later jobs or steps echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT publish: name: Publish Processing Core to Maven Central runs-on: ubuntu-latest needs: version steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Setup Java uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: 17 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Build with Gradle run: ./gradlew publish env: MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_IN_MEMORY_KEY }} ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }} ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }} build: name: Publish Release for ${{ matrix.os_prefix }} (${{ matrix.arch }}) runs-on: ${{ matrix.os }} needs: version permissions: contents: write strategy: fail-fast: false matrix: include: # compiling for arm32 needs a self-hosted runner on Raspi OS (32-bit) - os: [self-hosted, linux, ARM] os_prefix: linux arch: arm - os: ubuntu-latest os_prefix: linux arch: x64 - os: windows-latest os_prefix: windows arch: x64 - os: macos-latest os_prefix: macos arch: x64 - os: macos-latest os_prefix: macos arch: aarch64 - os: macos-latest os_prefix: linux arch: aarch64 steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Checkout Examples Repository uses: actions/checkout@v4 with: repository: processing/processing-examples path: processing-examples - name: Install Java uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' architecture: ${{ matrix.arch }} - name: Setup Ant uses: cedx/setup-ant@v3 - name: Write build_number and revision to todo.txt and Base.java run: | echo "${{ needs.version.outputs.build_number }} (${{ needs.version.outputs.version }})" > todo.txt perl -pi -e 's/static private final int REVISION = \d+;/static private final int REVISION = ${{ needs.version.outputs.build_number }};/g; s/static private String VERSION_NAME = "\d+";\s*\/\/\$NON-NLS-1\$/static private String VERSION_NAME = "${{ needs.version.outputs.build_number }}"; \/\/\$NON-NLS-1\$/g' app/src/processing/app/Base.java - name: Install Certificates for Code Signing if: ${{ matrix.os_prefix == 'macos' }} uses: apple-actions/import-codesign-certs@v3 with: p12-file-base64: ${{ secrets.CERTIFICATES_P12 }} p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} - name: Build Release run: ant -noinput -buildfile build/build.xml ${{ matrix.os_prefix }}-dist -Dversion="${{ needs.version.outputs.version }}" -Dplatform=${{ matrix.os_prefix }} env: PROCESSING_APP_SIGNING: true PROCESSING_APP_PASSWORD: ${{ secrets.PROCESSING_APP_PASSWORD }} PROCESSING_APPLE_ID: ${{ secrets.PROCESSING_APPLE_ID }} PROCESSING_TEAM_ID: ${{ secrets.PROCESSING_TEAM_ID }} - name: Upload binaries to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ./build/${{ matrix.os_prefix }}/processing-${{ needs.version.outputs.version }}-${{ matrix.os_prefix}}-* file_glob: true