macos.yml 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. name: macOS Build
  2. on:
  3. push:
  4. tags:
  5. - 'v*' # run only on tags like v1.2.3
  6. permissions:
  7. contents: write
  8. jobs:
  9. build-macos:
  10. runs-on: macos-latest
  11. env:
  12. BUILD_TYPE: Release
  13. APP_NAME: standard_of_iron
  14. APP_DIR: build/bin
  15. QML_DIR: ui/qml
  16. steps:
  17. - uses: actions/checkout@v4
  18. - uses: jurplel/install-qt-action@v4
  19. with:
  20. version: '6.6.3'
  21. host: 'mac'
  22. arch: 'clang_64'
  23. cache: true
  24. modules: 'qt5compat qtmultimedia'
  25. - name: Configure
  26. run: cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDEFAULT_LANG=en
  27. - name: Build
  28. run: cmake --build build --config ${BUILD_TYPE}
  29. - name: Deploy Qt (macdeployqt)
  30. run: |
  31. macdeployqt "${APP_DIR}/${APP_NAME}.app" -qmldir="${QML_DIR}" -verbose=1
  32. - name: Copy assets into .app bundle
  33. run: |
  34. mkdir -p "${APP_DIR}/${APP_NAME}.app/Contents/Resources/assets"
  35. rsync -a assets/ "${APP_DIR}/${APP_NAME}.app/Contents/Resources/assets/"
  36. - name: Create DMG
  37. run: |
  38. hdiutil create -volname "Standard of Iron" -srcfolder "${APP_DIR}/${APP_NAME}.app" -ov -format UDZO "standard_of_iron-macos.dmg"
  39. - name: Sign and Notarize (optional)
  40. env:
  41. MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
  42. MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
  43. MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
  44. APPLE_ID: ${{ secrets.APPLE_ID }}
  45. APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
  46. APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
  47. run: |
  48. ./scripts/sign-and-notarize-macos.sh "${APP_DIR}/${APP_NAME}.app" "standard_of_iron-macos.dmg"
  49. - uses: actions/upload-artifact@v4
  50. with:
  51. name: macos-${{ env.BUILD_TYPE }}
  52. path: standard_of_iron-macos.dmg
  53. - name: Attach to GitHub Release
  54. uses: softprops/action-gh-release@v2
  55. if: startsWith(github.ref, 'refs/tags/')
  56. with:
  57. files: standard_of_iron-macos.dmg