From e65a57bba9b67544187b88b0852c49ee1875c90c Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 6 Sep 2023 12:57:41 +0200 Subject: [PATCH] harmonize workflow files in regards to JDK distribution and OpenJFX downloads --- .github/workflows/appimage.yml | 33 +++++++++++++++++++++-------- .github/workflows/build.yml | 3 ++- .github/workflows/debian.yml | 7 +++++- .github/workflows/get-version.yml | 5 ++--- .github/workflows/mac-dmg.yml | 16 ++++++++------ .github/workflows/pullrequest.yml | 3 ++- .github/workflows/release-check.yml | 3 --- .github/workflows/win-exe.yml | 15 ++++++------- 8 files changed, 53 insertions(+), 32 deletions(-) diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 187d5099c..99096c0a0 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -10,7 +10,10 @@ on: required: false env: + JAVA_DIST: 'temurin' JAVA_VERSION: 20 + OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_linux-x64_bin-jmods.zip' + OPENJFX_JMODS_AMD64_HASH: 'f522ac2ae4bdd61f0219b7b8d2058ff72a22f36a44378453bcfdcd82f8f5e08c' jobs: get-version: @@ -27,20 +30,32 @@ jobs: - name: Setup Java uses: actions/setup-java@v3 with: - distribution: 'zulu' + distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} java-package: 'jdk+fx' check-latest: true cache: 'maven' - - name: Ensure major jfx version in pom equals in jdk - shell: pwsh + + - name: Download OpenJFX jmods + id: download-jmods run: | - $jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\." - $jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\." - if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) { - Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) " + curl -L ${{ env.OPENJFX_JMODS_AMD64 }} -o openjfx-jmods.zip + echo "${{ env.OPENJFX_JMODS_AMD64_HASH }} openjfx-jmods.zip" | shasum -a256 --check + mkdir -p openjfx-jmods + unzip -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods + - name: Ensure major jfx version in pom and in jmods is the same + run: | + JMOD_VERSION_AMD64=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) + JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@} + JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*} + POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) + POM_JFX_VERSION=${POM_JFX_VERSION#*@} + POM_JFX_VERSION=${POM_JFX_VERSION%%.*} + + if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then + >&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION_AMD64})" exit 1 - } + fi - name: Set version run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }} - name: Run maven @@ -54,7 +69,7 @@ jobs: ${JAVA_HOME}/bin/jlink --verbose --output runtime - --module-path "${JAVA_HOME}/jmods" + --module-path "${JAVA_HOME}/jmods:openjfx-jmods" --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net --strip-native-commands --no-header-files diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f58cafe15..13acee970 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,7 @@ on: types: [labeled] env: + JAVA_DIST: 'temurin' JAVA_VERSION: 20 defaults: @@ -20,7 +21,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: 'zulu' + distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} cache: 'maven' - name: Cache SonarCloud packages diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml index 8447f387d..bf8a3e57a 100644 --- a/.github/workflows/debian.yml +++ b/.github/workflows/debian.yml @@ -16,9 +16,12 @@ on: type: boolean env: + JAVA_DIST: 'temurin' JAVA_VERSION: 20 OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_linux-x64_bin-jmods.zip' + OPENJFX_JMODS_AMD64_HASH: 'f522ac2ae4bdd61f0219b7b8d2058ff72a22f36a44378453bcfdcd82f8f5e08c' OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_linux-aarch64_bin-jmods.zip' + OPENJFX_JMODS_AARCH64_HASH: 'c0d80ebbe0aab404ef9ad8b46c05bf533a1e40b39b2720eebd9238d81f6326ca' jobs: build: @@ -43,7 +46,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v3 with: - distribution: 'zulu' + distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} check-latest: true cache: 'maven' @@ -53,9 +56,11 @@ jobs: id: download-jmods run: | curl -L ${{ env.OPENJFX_JMODS_AMD64 }} -o openjfx-amd64.zip + echo "${{ env.OPENJFX_JMODS_AMD64_HASH }} openjfx-amd64.zip" | shasum -a256 --check mkdir -p jmods/amd64 unzip -j openjfx-amd64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/amd64 curl -L ${{ env.OPENJFX_JMODS_AARCH64 }} -o openjfx-aarch64.zip + echo "${{ env.OPENJFX_JMODS_AARCH64_HASH }} openjfx-aarch64.zip" | shasum -a256 --check mkdir -p jmods/aarch64 unzip -j openjfx-aarch64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/aarch64 - name: Ensure major jfx version in pom and in jmods is the same diff --git a/.github/workflows/get-version.yml b/.github/workflows/get-version.yml index d8684dc20..44f5ccd85 100644 --- a/.github/workflows/get-version.yml +++ b/.github/workflows/get-version.yml @@ -22,9 +22,8 @@ on: value: ${{ jobs.determine-version.outputs.type }} env: - JAVA_VERSION: 20 JAVA_DIST: 'temurin' - JAVA_CACHE: 'maven' + JAVA_VERSION: 20 jobs: determine-version: @@ -44,7 +43,7 @@ jobs: with: distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} - cache: ${{ env.JAVA_CACHE }} + cache: 'maven' - id: versions name: Get version information run: | diff --git a/.github/workflows/mac-dmg.yml b/.github/workflows/mac-dmg.yml index 680140047..fe10ce531 100644 --- a/.github/workflows/mac-dmg.yml +++ b/.github/workflows/mac-dmg.yml @@ -15,7 +15,12 @@ on: type: boolean env: + JAVA_DIST: 'temurin' JAVA_VERSION: 20 + OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_osx-x64_bin-jmods.zip' + OPENJFX_JMODS_AMD64_HASH: '55b8ff7453d59c89ae129f6c9c5ad7b09a5d359568811b376ac1766c14d6a17c' + OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_osx-aarch64_bin-jmods.zip' + OPENJFX_JMODS_AARCH64_HASH: 'c60f5f19aa847e0e620e0b011e5de68f2c6755641c2141cec27a0b89f612beaf' jobs: get-version: @@ -36,23 +41,22 @@ jobs: output-suffix: x64 xcode-path: '/Applications/Xcode_13.2.1.app' fuse-lib: macFUSE - openjfx-url: https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_osx-x64_bin-jmods.zip - openjfx-sha: 55b8ff7453d59c89ae129f6c9c5ad7b09a5d359568811b376ac1766c14d6a17c + openjfx-url: ${{ env.OPENJFX_JMODS_AMD64 }} + openjfx-sha: ${{ env.OPENJFX_JMODS_AMD64_HASH }} - os: [self-hosted, macOS, ARM64] architecture: aarch64 output-suffix: arm64 xcode-path: '/Applications/Xcode_13.2.1.app' fuse-lib: FUSE-T - openjfx-url: https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_osx-aarch64_bin-jmods.zip - openjfx-sha: c60f5f19aa847e0e620e0b011e5de68f2c6755641c2141cec27a0b89f612beaf + openjfx-url: ${{ env.OPENJFX_JMODS_AARCH64 }} + openjfx-sha: ${{ env.OPENJFX_JMODS_AARCH64_HASH }} steps: - uses: actions/checkout@v3 - name: Setup Java uses: actions/setup-java@v3 with: - distribution: 'temurin' + distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} - java-package: 'jdk' architecture: ${{ matrix.architecture }} check-latest: true cache: 'maven' diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 73a21edde..14146d0cb 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -4,6 +4,7 @@ on: pull_request: env: + JAVA_DIST: 'temurin' JAVA_VERSION: 20 defaults: @@ -19,7 +20,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: 'zulu' + distribution: ${{ env.JAVA_DIST }} java-version: ${{ env.JAVA_VERSION }} cache: 'maven' - name: Build and Test diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index d5a17d121..ec532081b 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -6,9 +6,6 @@ on: - 'release/**' - 'hotfix/**' -env: - JAVA_VERSION: 20 - defaults: run: shell: bash diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index dc59b0d9a..07b0146ac 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -14,11 +14,10 @@ on: env: - JAVA_VERSION: 20 JAVA_DIST: 'temurin' - JAVA_CACHE: 'maven' - JFX_JMODS_URL: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_windows-x64_bin-jmods.zip' - JFX_JMODS_HASH: '18625bbc13c57dbf802486564247a8d8cab72ec558c240a401bf6440384ebd77' + JAVA_VERSION: 20 + OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/20.0.2/openjfx-20.0.2_windows-x64_bin-jmods.zip' + OPENJFX_JMODS_AMD64_HASH: '18625bbc13c57dbf802486564247a8d8cab72ec558c240a401bf6440384ebd77' defaults: run: @@ -46,13 +45,13 @@ jobs: java-version: ${{ env.JAVA_VERSION }} java-package: 'jdk' check-latest: true - cache: ${{ env.JAVA_CACHE }} + cache: 'maven' - name: Download and extract JavaFX jmods from Gluon #In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip run: | - curl --output jfxjmods.zip -L "${{ env.JFX_JMODS_URL }}" - if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.ToLower().equals("${{ env.JFX_JMODS_HASH }}")) { - throw "Wrong checksum of JMOD archive downloaded from ${{ env.JFX_JMODS_URL }}."; + curl --output jfxjmods.zip -L "${{ env.OPENJFX_JMODS_AMD64 }}" + if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.ToLower().equals("${{ env.OPENJFX_JMODS_AMD64_HASH }}")) { + throw "Wrong checksum of JMOD archive downloaded from ${{ env.OPENJFX_JMODS_AMD64 }}."; } Expand-Archive -Path jfxjmods.zip -DestinationPath jfxjmods Get-ChildItem -Path jfxjmods -Recurse -Filter "*.jmod" | ForEach-Object { Move-Item -Path $_ -Destination $_.Directory.Parent}