From 61c8ff9fadf629e85a24173b47b34d99f34ddf3e Mon Sep 17 00:00:00 2001 From: Bogdan Popa Date: Tue, 30 Jan 2024 21:08:06 +0200 Subject: [PATCH] ci,build_macos: use m1 runner for aarch64 --- .github/workflows/build_macos.yml | 197 +++--------------------------- 1 file changed, 20 insertions(+), 177 deletions(-) diff --git a/.github/workflows/build_macos.yml b/.github/workflows/build_macos.yml index 4d21fe8..ec6f940 100644 --- a/.github/workflows/build_macos.yml +++ b/.github/workflows/build_macos.yml @@ -1,81 +1,28 @@ on: push: - branches: - - master - workflow_dispatch: - inputs: - masBuild: - description: "Build for Mac App Store" - required: false - type: boolean name: Build on macOS jobs: - build_core_arm64: - runs-on: macos-13 - name: Build core (arm64) on macOS 13 + build_core: + runs-on: ${{ matrix.environment }} + name: Build core (${{ matrix.platform }}) on ${{ matrix.environment }} + strategy: + matrix: + environment: [macos-13, macos-14] + include: + - environment: macos-13 + platform: x86_64 + - environment: macos-14 + platform: arm64 steps: - uses: actions/checkout@master - - uses: Bogdanp/setup-racket@v1.10 - with: - architecture: 'x64' - distribution: 'full' - variant: 'CS' - version: '8.11.1' - packages: raco-cross-lib - - name: Clone Noise - run: | - mkdir ../../sandbox - env GIT_LFS_SKIP_SMUDGE=1 \ - git clone --depth 1 --branch racket-8.11.1 https://github.com/Bogdanp/Noise ../../sandbox/Noise - - name: Prepare secrets - run: | - echo -n "$LICENSE_SECRET" | base64 --decode -o core/secrets/license-secret.txt - env: - LICENSE_SECRET: ${{ secrets.LICENSE_SECRET }} - - name: Build core arm64 - run: | - raco cross \ - --target aarch64-macosx \ - --version 8.11.1 \ - -- pkg install -D --batch --auto ../../sandbox/Noise/Racket/noise-serde-lib/ - raco cross \ - --target aarch64-macosx \ - --version 8.11.1 \ - -- pkg install -D --batch --auto --name franz core/ - raco cross \ - --target aarch64-macosx \ - --version 8.11.1 \ - -- \ - ctool \ - ++lang lua \ - ++lib lua/lang/runtime-config \ - ++lib racket/runtime-config \ - --runtime FranzCocoa/resources/runtime-arm64 \ - --runtime-access runtime-arm64 \ - --mods FranzCocoa/resources/core-arm64.zo core/main.rkt - - name: Show your work - run: find FranzCocoa/resources - - name: Upload core - uses: actions/upload-artifact@v3 - with: - name: core-arm64 - path: | - FranzCocoa/resources/core-arm64.zo - FranzCocoa/resources/runtime-arm64/ - - build_core_x86_64: - runs-on: macos-13 - name: Build core (x86_64) on macOS 13 - steps: - - uses: actions/checkout@master - - uses: Bogdanp/setup-racket@v1.10 + - uses: Bogdanp/setup-racket@v1.11 with: architecture: 'x64' distribution: 'full' variant: 'CS' version: '8.11.1' packages: http-easy-lib - - name: Build Noise + - name: Clone Noise run: | mkdir ../../sandbox env GIT_LFS_SKIP_SMUDGE=1 \ @@ -94,28 +41,22 @@ jobs: run: make - name: Show your work run: find FranzCocoa/resources - - name: Upload manual - uses: actions/upload-artifact@v3 - with: - name: manual-x86_64 - path: FranzCocoa/resources/manual/ - name: Upload core uses: actions/upload-artifact@v3 with: - name: core-x86_64 + name: core-${{ matrix.platform }} path: | - FranzCocoa/resources/core-x86_64.zo - FranzCocoa/resources/runtime-x86_64/ + FranzCocoa/resources/core-${{ matrix.platform }}.zo + FranzCocoa/resources/runtime-${{ matrix.platform }}/ build_mac_app: - runs-on: macos-13 - name: Build Franz.app on macOS 13 + runs-on: macos-14 + name: Build Franz.app on macOS 14 needs: - - build_core_arm64 - - build_core_x86_64 + - build_core steps: - uses: actions/checkout@master - - uses: Bogdanp/setup-racket@v1.10 + - uses: Bogdanp/setup-racket@v1.11 with: architecture: 'x64' distribution: 'full' @@ -201,101 +142,3 @@ jobs: with: name: Franz.dmg path: dist/Franz.dmg - - build_mac_app_mas: - runs-on: macos-13 - name: Build Franz.app on macOS 13 (MAS) - needs: - - build_core_arm64 - - build_core_x86_64 - if: inputs.masBuild - steps: - - uses: actions/checkout@master - - uses: Bogdanp/setup-racket@v1.10 - with: - architecture: 'x64' - distribution: 'full' - variant: 'CS' - version: '8.11.1' - packages: http-easy-lib - - name: Install Noise - run: | - mkdir ../../sandbox - git clone --depth 1 --branch racket-8.11.1 https://github.com/Bogdanp/Noise ../../sandbox/Noise - raco pkg install -D --batch --auto ../../sandbox/noise/Racket/noise-serde-lib/ - pushd ../../sandbox/Noise - make - - name: Download core arm64 - uses: actions/download-artifact@v3 - with: - name: core-arm64 - path: FranzCocoa/resources/ - - name: Download core x86_64 - uses: actions/download-artifact@v3 - with: - name: core-x86_64 - path: FranzCocoa/resources/ - - name: Download manual x86_64 - uses: actions/download-artifact@v3 - with: - name: manual-x86_64 - path: FranzCocoa/resources/manual/ - - name: Show artifacts - run: find FranzCocoa/resources - - name: Install Certificates - run: | - # https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development - MAC_DEV_CER_PATH=$RUNNER_TEMP/madev.p12 - MAC_DIST_CER_PATH=$RUNNER_TEMP/madist.p12 - DEVELOPER_INSTALLER_CER_PATH=$RUNNER_TEMP/devinst.p12 - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - echo -n "$MAC_DEV_CER" | base64 --decode -o $MAC_DEV_CER_PATH - echo -n "$MAC_DIST_CER" | base64 --decode -o $MAC_DIST_CER_PATH - echo -n "$DEVELOPER_INSTALLER_CER" | base64 --decode -o $DEVELOPER_INSTALLER_CER_PATH - security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security import $MAC_DEV_CER_PATH -P "$MAC_DEV_CER_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security import $MAC_DIST_CER_PATH -P "$MAC_DIST_CER_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security import $DEVELOPER_INSTALLER_CER_PATH -P "$DEVELOPER_INSTALLER_CER_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security list-keychain -d user -s $KEYCHAIN_PATH - - mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles - echo -n "$MAC_PROVISIONING_PROFILE" | \ - base64 --decode -o ~/Library/MobileDevice/Provisioning\ Profiles/franz.provisionprofile - ls -l ~/Library/MobileDevice/Provisioning\ Profiles/ - env: - DEVELOPER_INSTALLER_CER: ${{ secrets.DEVELOPER_INSTALLER_CER }} - DEVELOPER_INSTALLER_CER_PASSWORD: ${{ secrets.DEVELOPER_INSTALLER_CER_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - MAC_DEV_CER: ${{ secrets.MAC_DEV_CER }} - MAC_DEV_CER_PASSWORD: ${{ secrets.MAC_DEV_CER_PASSWORD }} - MAC_DIST_CER: ${{ secrets.MAC_DIST_CER }} - MAC_DIST_CER_PASSWORD: ${{ secrets.MAC_DIST_CER_PASSWORD }} - MAC_PROVISIONING_PROFILE: ${{ secrets.MAC_PROVISIONING_PROFILE }} - - name: Build & Upload App - run: | - mkdir -p dist - xcodebuild \ - archive \ - -project FranzCocoa.xcodeproj/ \ - -scheme 'Franz MAS' \ - -destination 'generic/platform=macOS' \ - -archivePath dist/Franz.xcarchive - xcodebuild \ - -exportArchive \ - -archivePath dist/Franz.xcarchive \ - -exportOptionsPlist FranzCocoa/MASExportOptions.plist \ - -exportPath dist/ - xcrun altool \ - --upload-package dist/Franz.pkg \ - --type macos \ - --asc-public-id '69a6de7a-5947-47e3-e053-5b8c7c11a4d1' \ - --apple-id '6470144907' \ - --bundle-id 'io.defn.Franz' \ - --bundle-short-version-string "$(/usr/libexec/PlistBuddy -c 'Print ApplicationProperties:CFBundleShortVersionString' dist/Franz.xcarchive/Info.plist)" \ - --bundle-version "$(/usr/libexec/PlistBuddy -c 'Print ApplicationProperties:CFBundleVersion' dist/Franz.xcarchive/Info.plist)" \ - --username 'bogdan@defn.io' \ - --password "$APPLE_ID_PASSWORD" - env: - APPLE_ID_PASSWORD: ${{ secrets.NOTARY_PASSWORD }}