Changeset 19030 in josm for trunk/.github/workflows/ant.yml


Ignore:
Timestamp:
2024-04-04T19:24:39+02:00 (8 months ago)
Author:
taylor.smock
Message:

Fix #21533, see #23600: Native Apple Silicon Support

When building on macOS, the macos-jpackage.sh script now takes two arguments:

  1. The JOSM revision
  2. An additional JDK to build against (this should be of a different architecture)

If an additional JDK is specified, it is assumed that it is a different
architecture, and the two built apps are combined using lipo for a universal binary.

ant.yml does have some changes to make it easier to debug packaging issues in
PRs; the PR does still need to upload the specific package and add its branch to
the triggers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/.github/workflows/ant.yml

    r18993 r19030  
    11name: Java CI Build
    22env:
    3   junit_platform_version: '1.9.3'
    43  JAVAFX_VERSION: '17.0.7'
    54on:
     
    6059          draft: false
    6160          prerelease: ${{ env.josm_prerelease }}
     61        if: github.ref == 'refs/heads/master'
    6262
    6363  build:
     
    7070      matrix:
    7171        # test against latest update of each major Java version, as well as specific updates of LTS versions:
    72         java: [8, 11, 17, 21, 22-ea]
    73         os: [ubuntu-latest, macos-latest, windows-latest]
     72        java: [8, 11, 17, 21, 22]
     73        os: [ubuntu-latest, macos-14, windows-latest]
    7474    name: Java ${{ matrix.java }} on ${{ matrix.os }}
    7575    steps:
     
    9393          java-version: ${{ matrix.java }}
    9494
     95      - name: Setup x64 Java (Mac) ${{ matrix.java }}
     96        if: ${{ runner.os == 'macos' && runner.arch == 'ARM64' && always() }}
     97        uses: actions/setup-java@v4
     98        with:
     99          distribution: 'zulu'
     100          java-version: ${{ matrix.java }}
     101          architecture: x64
     102
    95103      - name: Install Ant
    96         uses: JOSM/JOSMPluginAction/actions/setup-ant@v1
     104        uses: JOSM/JOSMPluginAction/actions/setup-ant@v2
    97105
    98106      - name: Optimise images
     
    114122        # Calls ant with -Dreleasebuild=true if we're a 'tested' build
    115123        run: |
    116           export SIGN_KEYSTORE=certificate.p12
    117           echo "$SIGN_CERT" | base64 --decode > $SIGN_KEYSTORE
     124          if [ ! -z "${SIGN_CERT}" ]; then
     125            export SIGN_KEYSTORE=certificate.p12
     126            echo "$SIGN_CERT" | base64 --decode > $SIGN_KEYSTORE
     127          fi
    118128          if [ "${{ needs.createrelease.outputs.josm_prerelease }}" == "true" ]; then
    119129            ANT="ant"
     
    122132          fi
    123133          $ANT dist
    124           rm $SIGN_KEYSTORE
     134          if [ ! -z "${SIGN_KEYSTORE}" ]; then rm $SIGN_KEYSTORE; fi
    125135
    126136      - name: Upload jar
    127         if: ${{ always() }}
     137        if: ${{ always() && needs.createrelease.outputs.upload_url }}
    128138        env:
    129139          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     
    144154          APPLE_ID_TEAM: ${{ secrets.APPLE_ID_TEAM }}
    145155        run: |
    146           if [ ! -f tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip ]; then
    147             curl -o tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip
    148           fi
    149           unzip tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip
    150           mv javafx-jmods-${JAVAFX_VERSION}/*.jmod $JAVA_HOME/jmods/
    151           ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }}
     156          function setup_openjfx() {
     157            if [ ! -f tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip ]; then
     158              curl -o tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${1}_bin-jmods.zip
     159            fi
     160            unzip tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip
     161            mv javafx-jmods-${JAVAFX_VERSION}/*.jmod $JAVA_HOME/jmods/
     162          }
     163
     164          if [ ${{ runner.arch }} == "ARM64" ]; then
     165            JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_ARM64}" PATH="${JAVA_HOME_${{ matrix.java }}_ARM64}/bin:${PATH}" setup_openjfx aarch64 ARM64
     166            JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_X64}" PATH="${JAVA_HOME_${{ matrix.java }}_X64}/bin:${PATH}" setup_openjfx x64 X64
     167            JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_ARM64}" ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }} "${JAVA_HOME_${{ matrix.java }}_X64}"
     168          else
     169            setup_openjfx x64 X64
     170            ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }}
     171          fi
    152172
    153173      - name: Setup Windows PATH
     
    173193
    174194      - name: Upload macOS app
    175         if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() }}
     195        if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }}
    176196        uses: actions/upload-release-asset@v1
    177197        env:
     
    183203          asset_content_type: application/zip
    184204
     205      - name: Upload macOS app (x64)
     206        if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && runner.arch == 'ARM64' && needs.createrelease.outputs.upload_url }}
     207        uses: actions/upload-release-asset@v1
     208        env:
     209          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     210        with:
     211          upload_url: ${{ needs.createrelease.outputs.upload_url }} # This pulls from the CREATE RELEASE job above, referencing its ID to get its outputs object, which include a `upload_url`.
     212          asset_path: app/JOSM_${{ matrix.java }}_x86_64.zip
     213          asset_name: JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}-x64.zip
     214          asset_content_type: application/zip
     215
     216      - name: Upload macOS app (aarch64)
     217        if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && runner.arch == 'ARM64' && needs.createrelease.outputs.upload_url }}
     218        uses: actions/upload-release-asset@v1
     219        env:
     220          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     221        with:
     222          upload_url: ${{ needs.createrelease.outputs.upload_url }} # This pulls from the CREATE RELEASE job above, referencing its ID to get its outputs object, which include a `upload_url`.
     223          asset_path: app/JOSM_${{ matrix.java }}_arm64.zip
     224          asset_name: JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}-aarch64.zip
     225          asset_content_type: application/zip
     226
    185227      - name: Upload Windows Installer executable
    186         if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() }}
     228        if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }}
    187229        uses: actions/upload-release-asset@v1
    188230        env:
     
    195237
    196238      - name: Upload Windows Installer package
    197         if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() }}
     239        if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }}
    198240        uses: actions/upload-release-asset@v1
    199241        env:
Note: See TracChangeset for help on using the changeset viewer.