| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- name: macOS Build
- on:
- push:
- tags:
- - 'v*' # run only on tags like v1.2.3
- permissions:
- contents: write
- jobs:
- build-macos:
- runs-on: macos-latest
- env:
- BUILD_TYPE: Release
- APP_NAME: standard_of_iron
- APP_DIR: build/bin
- QML_DIR: ui/qml
- steps:
- - uses: actions/checkout@v4
- - uses: jurplel/install-qt-action@v4
- with:
- version: '6.6.3'
- host: 'mac'
- arch: 'clang_64'
- cache: true
- modules: 'qt5compat qtmultimedia'
- - name: Configure
- run: cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDEFAULT_LANG=en
- - name: Build
- run: cmake --build build --config ${BUILD_TYPE}
- - name: Deploy Qt (macdeployqt)
- run: |
- macdeployqt "${APP_DIR}/${APP_NAME}.app" -qmldir="${QML_DIR}" -verbose=1
- - name: Copy assets into .app bundle
- run: |
- mkdir -p "${APP_DIR}/${APP_NAME}.app/Contents/Resources/assets"
- rsync -a assets/ "${APP_DIR}/${APP_NAME}.app/Contents/Resources/assets/"
- - name: Create DMG
- run: |
- hdiutil create -volname "Standard of Iron" -srcfolder "${APP_DIR}/${APP_NAME}.app" -ov -format UDZO "standard_of_iron-macos.dmg"
- - name: Sign and Notarize (optional)
- env:
- MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
- MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
- MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
- APPLE_ID: ${{ secrets.APPLE_ID }}
- APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
- APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- run: |
- ./scripts/sign-and-notarize-macos.sh "${APP_DIR}/${APP_NAME}.app" "standard_of_iron-macos.dmg"
- - uses: actions/upload-artifact@v4
- with:
- name: macos-${{ env.BUILD_TYPE }}
- path: standard_of_iron-macos.dmg
- - name: Attach to GitHub Release
- uses: softprops/action-gh-release@v2
- if: startsWith(github.ref, 'refs/tags/')
- with:
- files: standard_of_iron-macos.dmg
|