mirror of
https://github.com/processing/processing4.git
synced 2026-03-15 00:47:39 +01:00
346 lines
13 KiB
YAML
346 lines
13 KiB
YAML
name: Releases
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
version:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
revision: ${{ steps.tag_info.outputs.revision }}
|
|
version: ${{ steps.tag_info.outputs.version }}
|
|
steps:
|
|
- name: Extract version and revision
|
|
id: tag_info
|
|
shell: bash
|
|
run: |
|
|
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
REVISION=$(echo "$TAG_NAME" | cut -d'-' -f2)
|
|
VERSION=$(echo "$TAG_NAME" | cut -d'-' -f3)
|
|
|
|
# Set outputs for use in later jobs or steps
|
|
echo "revision=$REVISION" >> $GITHUB_OUTPUT
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
reference:
|
|
name: Publish Processing Reference to release
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
needs: version
|
|
steps:
|
|
- name: Checkout Website Repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: processing/processing-website
|
|
- name: Use Node.js 16
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
- name: Build
|
|
run: npm run build
|
|
- name: Make reference.zip
|
|
run: npm run zip
|
|
- name: Upload reference to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-reference.zip
|
|
file: reference.zip
|
|
|
|
publish-maven:
|
|
name: Publish Processing Libraries to Maven Central
|
|
runs-on: ubuntu-latest
|
|
needs: version
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
|
|
- 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 }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
release-windows:
|
|
name: (windows/${{ matrix.arch }}) Create Processing Release
|
|
runs-on: ${{ matrix.os }}
|
|
needs: version
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arch: x64
|
|
os: windows-latest
|
|
# - arch: aarch64
|
|
# os: windows-11-arm
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
|
|
- name: Build with Gradle
|
|
run: ./gradlew packageDistributionForCurrentOS
|
|
env:
|
|
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
|
|
|
- name: Sign files with Trusted Signing
|
|
uses: azure/trusted-signing-action@v0
|
|
with:
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
|
|
endpoint: https://eus.codesigning.azure.net/
|
|
trusted-signing-account-name: ${{ secrets.AZURE_SIGNING_ACCOUNT_NAME }}
|
|
certificate-profile-name: ${{ secrets.AZURE_CERTIFICATE_PROFILE_NAME }}
|
|
files-folder: app/build/compose/binaries/main/msi
|
|
files-folder-filter: msi
|
|
file-digest: SHA256
|
|
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
|
timestamp-digest: SHA256
|
|
|
|
- name: Upload portable version
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-windows-${{ matrix.arch }}-portable.zip
|
|
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
|
|
|
|
- name: Upload installer
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-windows-${{ matrix.arch }}.msi
|
|
file: app/build/compose/binaries/main/msi/Processing-${{ needs.version.outputs.version }}.msi
|
|
|
|
release-macos:
|
|
name: (macOS/${{ matrix.arch }}) Create Processing Release
|
|
runs-on: macos-latest
|
|
needs: version
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arch: x64
|
|
- arch: aarch64
|
|
steps:
|
|
- name: Install Certificates for Code Signing
|
|
continue-on-error: true
|
|
uses: apple-actions/import-codesign-certs@v3
|
|
with:
|
|
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
|
|
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
|
|
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
with:
|
|
arch: ${{ matrix.arch }}
|
|
|
|
- name: Build with Gradle
|
|
run: ./gradlew packageDistributionForCurrentOS
|
|
env:
|
|
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.verbose: true
|
|
ORG_GRADLE_PROJECT_compose.desktop.mac.sign: ${{ secrets.PROCESSING_SIGNING }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.mac.signing.identity: ${{ secrets.PROCESSING_SIGNING_IDENTITY }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.appleID: ${{ secrets.PROCESSING_APPLE_ID }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.password: ${{ secrets.PROCESSING_APP_PASSWORD }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.teamID: ${{ secrets.PROCESSING_TEAM_ID }}
|
|
|
|
- name: Upload portables to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-macos-${{ matrix.arch }}-portable.zip
|
|
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
|
|
|
|
- name: Upload installers to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-macos-${{ matrix.arch }}.dmg
|
|
file: app/build/compose/binaries/main/dmg/Processing-${{ needs.version.outputs.version }}.dmg
|
|
|
|
release-linux:
|
|
name: (linux/${{ matrix.arch }}) Create Processing Release
|
|
runs-on: ${{ matrix.os }}
|
|
needs: version
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04-arm
|
|
arch: aarch64
|
|
deb: arm64
|
|
- os: ubuntu-latest
|
|
arch: x64
|
|
deb: amd64
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
|
|
- name: Build with Gradle
|
|
run: ./gradlew packageDistributionForCurrentOS
|
|
env:
|
|
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
|
ORG_GRADLE_PROJECT_compose.desktop.verbose: true
|
|
|
|
- name: Upload portable to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}-portable.zip
|
|
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
|
|
|
|
- name: Upload installer to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.deb
|
|
file: app/build/compose/binaries/main/deb/processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
|
|
|
|
- name: Add artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
|
|
retention-days: 1
|
|
path: app/build/compose/binaries/main/deb/processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
|
|
|
|
release-linux-snap:
|
|
name: (linux/${{ matrix.arch }}) Create Processing Snap Release
|
|
runs-on: ${{ matrix.os }}
|
|
needs: [version, release-linux]
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04-arm
|
|
arch: aarch64
|
|
deb: arm64
|
|
- os: ubuntu-latest
|
|
arch: x64
|
|
deb: amd64
|
|
steps:
|
|
- name: Install Snapcraft
|
|
uses: samuelmeuli/action-snapcraft@v3
|
|
|
|
- name: Install LXD
|
|
uses: canonical/setup-lxd@main
|
|
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
|
|
path: app/build/compose/binaries/main/deb/
|
|
|
|
- name: Build with Gradle
|
|
run: ./gradlew packageSnap
|
|
env:
|
|
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
|
ORG_GRADLE_PROJECT_snapname: ${{ vars.SNAP_NAME }}
|
|
ORG_GRADLE_PROJECT_snapconfinement: ${{ vars.SNAP_CONFINEMENT }}
|
|
|
|
- name: Upload snap to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.snap
|
|
file: app/build/compose/binaries/main/${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_${{ matrix.deb }}.snap
|
|
|
|
- name: Upload snap to Snap Store
|
|
run: snapcraft upload --release=beta app/build/compose/binaries/main/${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_${{ matrix.deb }}.snap
|
|
env:
|
|
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.PROCESSING_SNAPCRAFT_TOKEN }}
|
|
release-linux-flatpak:
|
|
name: (linux/${{ matrix.arch }}) Create Processing Flatpak Release
|
|
runs-on: ${{ matrix.os }}
|
|
needs: [ version, release-linux ]
|
|
container:
|
|
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
|
options: --privileged
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04-arm
|
|
arch: aarch64
|
|
deb: arm64
|
|
farch: aarch64
|
|
- os: ubuntu-latest
|
|
arch: x64
|
|
deb: amd64
|
|
farch: x86_64
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
|
|
path: app/build/compose/binaries/main/deb/
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
|
|
- name: Build with Gradle
|
|
run: ./gradlew generateFlatpakConfiguration
|
|
env:
|
|
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
|
|
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
|
|
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
|
|
|
|
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
|
with:
|
|
bundle: processing.flatpak
|
|
manifest-path: app/build/compose/binaries/main/flatpak/org.processing.pde.yml
|
|
cache-key: flatpak-builder-${{ github.sha }}
|
|
arch: ${{ matrix.farch }}
|
|
|
|
- name: Upload Flatpak to release
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.flatpak
|
|
file: processing.flatpak |