From 359cfeff1099f9a36e32f06a18ab0f8f108187ca Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 13 Jun 2024 17:05:00 +0200 Subject: [PATCH] Release binaries: linux amd64, macos amd64, macos aarch64, windows amd64 (#1016) GH Action and related changes to finally cover all targeted OS/platforms with native binary. Changes: * no source change * POM change: using released Maven 3.9.8 (and added access to staged Maven 3.9.8) * Provide 4 plaf binaries: linux amd64, windows amd64, mac amd64 and mac aarch64 * adopt GH workflows for these changes (using "OS" alone is not enough) * adopt generally GraalVM naming and use them consecutively --- .github/workflows/early-access.yaml | 31 +++++++++---- .github/workflows/release.yaml | 67 +++++++++++++++++++++++++---- .mvn/release-settings.xml | 2 +- pom.xml | 2 +- 4 files changed, 83 insertions(+), 19 deletions(-) diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml index 3c2f5962..c5bd6695 100644 --- a/.github/workflows/early-access.yaml +++ b/.github/workflows/early-access.yaml @@ -31,7 +31,7 @@ jobs: default-build: name: 'Default build (without Graal)' if: startsWith(github.event.head_commit.message, '[release] Release ') != true - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: 'Checkout' uses: actions/checkout@v4 @@ -42,7 +42,7 @@ jobs: distribution: 'temurin' - name: 'Run default (non-native) build' - run: ./mvnw verify -Dmrm=false -V -B -ntp -e + run: ./mvnw verify -Dmrm=false -V -B -ntp -e -s .mvn/release-settings.xml - name: 'Upload daemon test logs' if: always() @@ -57,7 +57,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, macos-latest, windows-latest ] + # binaries wanted: linux amd64, mac intel, mac M1, windows x86 + os: [ ubuntu-latest, macos-13, macos-14, windows-latest ] runs-on: ${{ matrix.os }} steps: @@ -67,9 +68,23 @@ jobs: - name: 'Set vars' shell: bash run: | + ARCH=$(echo '${{ runner.arch }}' | awk '{print tolower($0)}') + if [[ $ARCH == 'x64' ]] + then + echo "ARCH=amd64" >> $GITHUB_ENV + elif [[ $ARCH == 'arm64' ]] + then + echo "ARCH=aarch64" >> $GITHUB_ENV + else + echo "ARCH=$ARCH" >> $GITHUB_ENV + fi OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}') - [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV - [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV + if [[ $OS == 'macos' ]] + then + echo "OS=darwin" >> $GITHUB_ENV + else + echo "OS=$OS" >> $GITHUB_ENV + fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: 'Set up Graal' @@ -105,7 +120,7 @@ jobs: objcopy --redefine-syms=client/src/main/resources/glibc/glibc.redef client/target/graalvm-libs-for-glibc-2.12/Scrt1.o 2>/dev/null - name: 'Build native distribution' - run: ./mvnw verify -Pnative -Dmrm=false -V -B -ntp -e + run: ./mvnw verify -Pnative -Dmrm=false -V -B -ntp -e -s .mvn/release-settings.xml - name: 'Verify native binary for only requiring glibc 2.12' if: ${{ env.OS == 'linux' }} @@ -120,11 +135,11 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: daemon-test-logs-${{ env.OS }} + name: daemon-test-logs-${{ env.OS }}-${{ env.ARCH }} path: integration-tests/target/mvnd-tests/**/daemon*.log - name: 'Upload artifact' uses: actions/upload-artifact@v4 with: - name: mvnd-${{ env.OS }} + name: mvnd-${{ env.OS }}-${{ env.ARCH }} path: dist/target/maven-mvnd-*.zip diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3ea1fe7d..0e64bbf4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -34,7 +34,8 @@ jobs: strategy: fail-fast: true matrix: - os: [ ubuntu-latest, macos-latest, windows-latest ] + # binaries wanted: linux amd64, mac intel, mac M1, windows x86 + os: [ ubuntu-latest, macos-13, macos-14, windows-latest ] runs-on: ${{ matrix.os }} steps: @@ -44,9 +45,23 @@ jobs: - name: 'Set vars' shell: bash run: | + ARCH=$(echo '${{ runner.arch }}' | awk '{print tolower($0)}') + if [[ $ARCH == 'x64' ]] + then + echo "ARCH=amd64" >> $GITHUB_ENV + elif [[ $ARCH == 'arm64' ]] + then + echo "ARCH=aarch64" >> $GITHUB_ENV + else + echo "ARCH=$ARCH" >> $GITHUB_ENV + fi OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}') - [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV - [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV + if [[ $OS == 'macos' ]] + then + echo "OS=darwin" >> $GITHUB_ENV + else + echo "OS=$OS" >> $GITHUB_ENV + fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: 'Set up Graal' @@ -103,7 +118,7 @@ jobs: source: name: 'Build source distributions' - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: 'Check out repository' uses: actions/checkout@v4 @@ -111,9 +126,23 @@ jobs: - name: 'Set vars' shell: bash run: | + ARCH=$(echo '${{ runner.arch }}' | awk '{print tolower($0)}') + if [[ $ARCH == 'x64' ]] + then + echo "ARCH=amd64" >> $GITHUB_ENV + elif [[ $ARCH == 'arm64' ]] + then + echo "ARCH=aarch64" >> $GITHUB_ENV + else + echo "ARCH=$ARCH" >> $GITHUB_ENV + fi OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}') - [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV - [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV + if [[ $OS == 'macos' ]] + then + echo "OS=darwin" >> $GITHUB_ENV + else + echo "OS=$OS" >> $GITHUB_ENV + fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: 'Set up Graal' @@ -136,7 +165,7 @@ jobs: target/maven-mvnd-*.tar.gz release: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [build, source] steps: @@ -158,8 +187,8 @@ jobs: uses: actions/cache@v4 with: path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 + key: ${{ runner.os }}-${{ runner.arch }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-${{ runner.arch }}-m2 - name: ls -R run: ls -R @@ -239,6 +268,26 @@ jobs: asset_name: maven-mvnd-${{ env.VERSION }}-darwin-amd64.tar.gz asset_content_type: application/x-gzip + - name: Deploy maven-mvnd-darwin-aarch64.zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-darwin-aarch64.zip + asset_name: maven-mvnd-${{ env.VERSION }}-darwin-aarch64.zip + asset_content_type: application/zip + + - name: Deploy maven-mvnd-darwin-aarch.tar.gz + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: artifacts/dist/target/maven-mvnd-${{ env.VERSION }}-darwin-aarch64.tar.gz + asset_name: maven-mvnd-${{ env.VERSION }}-darwin-aarch64.tar.gz + asset_content_type: application/x-gzip + - name: Deploy maven-mvnd-windows-amd64.zip uses: actions/upload-release-asset@v1 env: diff --git a/.mvn/release-settings.xml b/.mvn/release-settings.xml index 791682b2..182d3b86 100644 --- a/.mvn/release-settings.xml +++ b/.mvn/release-settings.xml @@ -7,7 +7,7 @@ maven-staging-1 - https://repository.apache.org/content/repositories/maven-1859/ + https://repository.apache.org/content/repositories/maven-2146/ true diff --git a/pom.xml b/pom.xml index 84fa611c..6650533a 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ 1.0 2.4.1 3.26.1 - 3.9.8-20240612.175612-19 + 3.9.8 1.9.20 1.7.36