mirror of
https://github.com/processing/processing4.git
synced 2026-04-18 02:09:28 +02:00
* Publish Processing Gradle plugin
Add a publish-gradle job to the release workflow to publish Processing libraries to the Gradle Plugin Portal using gradle publish with required secrets and version/group env vars. Update gradle/plugins/library/build.gradle.kts to use the com.gradle.plugin-publish plugin, provide plugin metadata (website, vcsUrl, displayName, description, tags) and make the plugin id dynamic ("$group.library"). These changes enable automated publishing of the Gradle plugin with the metadata required by the portal.
* Publish plugins in release workflow
* Update build.gradle.kts
* Set project.group system property for tests
Expose the project's group to test JVMs by configuring tasks.withType<Test>() to set systemProperty("project.group", group ?: "org.processing"). Update ProcessingPluginTest to read the plugin id from System.getProperty("project.group") instead of hardcoding the group. Also close the publishing block in build.gradle.kts. This allows tests to adapt when the project group is overridden.
* Update build.gradle.kts
383 lines
14 KiB
YAML
383 lines
14 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 }}
|
|
|
|
publish-gradle:
|
|
name: Publish Processing Plugins to Gradle Plugin Portal
|
|
runs-on: ubuntu-latest
|
|
needs: version
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Processing
|
|
uses: ./.github/actions/setup
|
|
|
|
- name: Publish plugins to Gradle Plugin Portal
|
|
run: ./gradlew publishPlugins
|
|
env:
|
|
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
|
|
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
|
|
|
|
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 }}
|
|
|
|
- name: Publish internal plugins to Gradle Plugin Portal
|
|
run: ./gradlew -c gradle/plugins/settings.gradle.kts publishPlugins
|
|
env:
|
|
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
|
|
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
|
|
|
|
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 }}
|
|
ORG_GRADLE_PROJECT_publishingGroup: ${{ 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 |