From 56a80d2cc52844a76ecf01bb1401021b19356d0e Mon Sep 17 00:00:00 2001 From: Mischa Date: Sat, 17 Jan 2026 09:40:32 -0800 Subject: [PATCH 1/4] Add code signing and notarization for macOS releases Signs the app bundle and .pkg installer with Developer ID certificates, then notarizes both with Apple's notary service for Gatekeeper approval. Uses App Store Connect API key for notarization credentials. Replaces CPack with direct pkgbuild/productbuild for better signing control. Co-Authored-By: Claude Opus 4.5 --- .github/workflows/release-linux.yaml | 4 +- .github/workflows/release-macos.yaml | 133 ++++++++++++++++++++-- .github/workflows/release-windows.yaml | 4 +- .github/workflows/release.yaml | 55 +++++++++ packaging-macos.cmake | 4 +- src/resources/distribution.xml | 17 +++ src/resources/projectMSDL-component.plist | 2 +- 7 files changed, 207 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release.yaml create mode 100644 src/resources/distribution.xml diff --git a/.github/workflows/release-linux.yaml b/.github/workflows/release-linux.yaml index fc49a49..29bb93e 100644 --- a/.github/workflows/release-linux.yaml +++ b/.github/workflows/release-linux.yaml @@ -4,7 +4,9 @@ # while POCO will be linked statically. name: Build Release Package for Linux -on: workflow_dispatch +on: + workflow_dispatch: + workflow_call: jobs: build-deb: diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index 3b32b48..fefe223 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -2,7 +2,22 @@ # Builds a universal binary on macOS. name: Build Release Package for macOS -on: workflow_dispatch +on: + workflow_dispatch: + workflow_call: + secrets: + MACOS_CERTIFICATE_APPLICATION: + required: true + MACOS_CERTIFICATE_INSTALLER: + required: true + MACOS_CERTIFICATE_PASSWORD: + required: true + MACOS_NOTARY_API_KEY: + required: true + MACOS_NOTARY_KEY_ID: + required: true + MACOS_NOTARY_ISSUER_ID: + required: true jobs: build-deb: @@ -112,19 +127,123 @@ jobs: "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \ "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \ "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \ - '-DDEFAULT_CONFIG_PATH=${application.dir}/../share/projectMSDL/' \ - '-DDEFAULT_PRESETS_PATH=${application.dir}/../share/projectMSDL/presets/' \ - '-DDEFAULT_TEXTURES_PATH=${application.dir}/../share/projectMSDL/textures/' \ -DENABLE_INSTALL_BDEPS=ON cmake --build cmake-build-frontend-sdl2 --parallel + cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install" + + - name: Import Code Signing Certificates + env: + MACOS_CERTIFICATE_APPLICATION: ${{ secrets.MACOS_CERTIFICATE_APPLICATION }} + MACOS_CERTIFICATE_INSTALLER: ${{ secrets.MACOS_CERTIFICATE_INSTALLER }} + MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} + run: | + echo "$MACOS_CERTIFICATE_APPLICATION" | base64 --decode > app_cert.p12 && chmod 600 app_cert.p12 + echo "$MACOS_CERTIFICATE_INSTALLER" | base64 --decode > installer_cert.p12 && chmod 600 installer_cert.p12 + + KEYCHAIN_PASSWORD=$(openssl rand -base64 32) + security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + + security import app_cert.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PASSWORD" -T /usr/bin/codesign + security import installer_cert.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PASSWORD" -T /usr/bin/productsign + + security set-key-partition-list -S apple-tool:,apple:,codesign:,productbuild: -s -k "$KEYCHAIN_PASSWORD" build.keychain + + rm app_cert.p12 installer_cert.p12 + + - name: Sign Application Bundle + run: | + APP_PATH="${{ github.workspace }}/install/projectM.app" + IDENTITY="Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" + + # Sign all dylibs first (if PlugIns directory exists) + if [ -d "$APP_PATH/Contents/PlugIns" ]; then + find "$APP_PATH/Contents/PlugIns" -name "*.dylib" -exec \ + codesign --force --options runtime --sign "$IDENTITY" {} \; + fi + + # Sign the main executable + codesign --force --options runtime --sign "$IDENTITY" \ + "$APP_PATH/Contents/MacOS/projectM" + + # Sign the entire bundle + codesign --force --options runtime --sign "$IDENTITY" "$APP_PATH" + + # Verify + codesign --verify --deep --strict "$APP_PATH" + + - name: Notarize Application + env: + API_KEY_BASE64: ${{ secrets.MACOS_NOTARY_API_KEY }} + API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} + API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }} + run: | + mkdir -p ~/.private_keys + echo "$API_KEY_BASE64" | base64 --decode > ~/.private_keys/AuthKey_${API_KEY_ID}.p8 + chmod 600 ~/.private_keys/AuthKey_${API_KEY_ID}.p8 + + ditto -c -k --keepParent \ + "${{ github.workspace }}/install/projectM.app" \ + "projectM-notarize.zip" + + xcrun notarytool submit "projectM-notarize.zip" \ + --key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \ + --key-id "$API_KEY_ID" \ + --issuer "$API_ISSUER_ID" \ + --wait + + xcrun stapler staple "${{ github.workspace }}/install/projectM.app" - name: Package projectMSDL run: | - cd cmake-build-frontend-sdl2 - cpack -G productbuild + # Get version from CMake + VERSION=$(grep "project(projectMSDL" frontend-sdl2/CMakeLists.txt | sed -E 's/.*VERSION ([0-9.]+).*/\1/') + + # Build component package from signed app + pkgbuild \ + --root "${{ github.workspace }}/install" \ + --identifier "org.projectm-visualizer.projectmsdl" \ + --version "$VERSION" \ + --install-location "/Applications" \ + --component-plist "frontend-sdl2/src/resources/projectMSDL-component.plist" \ + "projectMSDL-component.pkg" + + # Build unsigned product archive + productbuild \ + --distribution "frontend-sdl2/src/resources/distribution.xml" \ + --package-path "." \ + --resources "frontend-sdl2/src/resources" \ + "projectM-${VERSION}-macOS-universal-unsigned.pkg" + + # Sign the package with productsign + productsign \ + --sign "Developer ID Installer: Mischa Spiegelmock (5926VBQM6Y)" \ + "projectM-${VERSION}-macOS-universal-unsigned.pkg" \ + "projectM-${VERSION}-macOS-universal.pkg" + + rm "projectM-${VERSION}-macOS-universal-unsigned.pkg" + + - name: Notarize Package + env: + API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} + API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }} + run: | + PKG_FILE=$(ls projectM-*.pkg | head -1) + + xcrun notarytool submit "$PKG_FILE" \ + --key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \ + --key-id "$API_KEY_ID" \ + --issuer "$API_ISSUER_ID" \ + --wait + + xcrun stapler staple "$PKG_FILE" + + # Clean up API key + rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8 - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: projectMSDL-macOS-Universal - path: cmake-build-frontend-sdl2/*.pkg + path: projectM-*.pkg diff --git a/.github/workflows/release-windows.yaml b/.github/workflows/release-windows.yaml index cdb6f49..dddf542 100644 --- a/.github/workflows/release-windows.yaml +++ b/.github/workflows/release-windows.yaml @@ -3,7 +3,9 @@ # including projectM. name: Build Release Package for Windows -on: workflow_dispatch +on: + workflow_dispatch: + workflow_call: jobs: build: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..329a7fc --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,55 @@ +# Unified release workflow +# Triggers on version tags, builds all platforms, and creates a GitHub release +name: Release + +on: + push: + tags: + - 'v*' + +jobs: + build-linux: + name: Build Linux + uses: ./.github/workflows/release-linux.yaml + + build-windows: + name: Build Windows + uses: ./.github/workflows/release-windows.yaml + + build-macos: + name: Build macOS + uses: ./.github/workflows/release-macos.yaml + secrets: + MACOS_CERTIFICATE_APPLICATION: ${{ secrets.MACOS_CERTIFICATE_APPLICATION }} + MACOS_CERTIFICATE_INSTALLER: ${{ secrets.MACOS_CERTIFICATE_INSTALLER }} + MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} + MACOS_NOTARY_API_KEY: ${{ secrets.MACOS_NOTARY_API_KEY }} + MACOS_NOTARY_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} + MACOS_NOTARY_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }} + + create-release: + name: Create Release + needs: [build-linux, build-windows, build-macos] + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Display artifacts + run: ls -R artifacts + + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + files: | + artifacts/**/*.pkg + artifacts/**/*.deb + artifacts/**/*.tar.gz + artifacts/**/*.zip + artifacts/**/*.msi diff --git a/packaging-macos.cmake b/packaging-macos.cmake index f155009..cb34ad9 100644 --- a/packaging-macos.cmake +++ b/packaging-macos.cmake @@ -10,8 +10,8 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/src/resources/gpl-3 set(CPACK_STRIP_FILES TRUE) ### Productbuild configuration -set(CPACK_PKGBUILD_IDENTITY_NAME "${CODESIGN_IDENTITY_INSTALLER}") -set(CPACK_PRODUCTBUILD_IDENTITY_NAME "${CODESIGN_IDENTITY_INSTALLER}") +set(CPACK_PKGBUILD_IDENTITY_NAME "$ENV{CODESIGN_IDENTITY_INSTALLER}") +set(CPACK_PRODUCTBUILD_IDENTITY_NAME "$ENV{CODESIGN_IDENTITY_INSTALLER}") set(CPACK_PRODUCTBUILD_IDENTIFIER "org.projectm-visualizer.projectmsdl") string(REPLACE ";" "," INSTALL_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") diff --git a/src/resources/distribution.xml b/src/resources/distribution.xml new file mode 100644 index 0000000..59826b8 --- /dev/null +++ b/src/resources/distribution.xml @@ -0,0 +1,17 @@ + + + projectM + org.projectm-visualizer + + + + + + + + + + + + projectMSDL-component.pkg + diff --git a/src/resources/projectMSDL-component.plist b/src/resources/projectMSDL-component.plist index 77e470a..9d2e36c 100644 --- a/src/resources/projectMSDL-component.plist +++ b/src/resources/projectMSDL-component.plist @@ -12,7 +12,7 @@ BundleOverwriteAction upgrade RootRelativeBundlePath - Applications/projectM.app + projectM.app \ No newline at end of file From 9e7397276526735cc67011e7fd1eb0588c7eec3a Mon Sep 17 00:00:00 2001 From: Mischa Date: Sat, 17 Jan 2026 18:42:27 -0800 Subject: [PATCH 2/4] Add microphone entitlements for macOS Adds audio-input entitlement and NSMicrophoneUsageDescription so the app can request microphone access when running as a signed/notarized bundle. Co-Authored-By: Claude Opus 4.5 --- .github/workflows/release-macos.yaml | 9 ++++---- src/CMakeLists.txt | 1 + src/resources/Info.plist.in | 30 ++++++++++++++++++++++++++ src/resources/projectMSDL.entitlements | 8 +++++++ 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/resources/Info.plist.in create mode 100644 src/resources/projectMSDL.entitlements diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index fefe223..ff5e43d 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -156,6 +156,7 @@ jobs: run: | APP_PATH="${{ github.workspace }}/install/projectM.app" IDENTITY="Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" + ENTITLEMENTS="${{ github.workspace }}/frontend-sdl2/src/resources/projectMSDL.entitlements" # Sign all dylibs first (if PlugIns directory exists) if [ -d "$APP_PATH/Contents/PlugIns" ]; then @@ -163,12 +164,12 @@ jobs: codesign --force --options runtime --sign "$IDENTITY" {} \; fi - # Sign the main executable - codesign --force --options runtime --sign "$IDENTITY" \ + # Sign the main executable with entitlements + codesign --force --options runtime --entitlements "$ENTITLEMENTS" --sign "$IDENTITY" \ "$APP_PATH/Contents/MacOS/projectM" - # Sign the entire bundle - codesign --force --options runtime --sign "$IDENTITY" "$APP_PATH" + # Sign the entire bundle with entitlements + codesign --force --options runtime --entitlements "$ENTITLEMENTS" --sign "$IDENTITY" "$APP_PATH" # Verify codesign --verify --deep --strict "$APP_PATH" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ba764dc..4f58bdf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,6 +31,7 @@ set_target_properties(projectMSDL PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.projectm.frontend.sdl2" MACOSX_BUNDLE_ICON_FILE "projectMSDL.icns" MACOSX_BUNDLE_SHORT_VERSION_STRING "${projectMSDL_VERSION}" + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist.in" ) if (CMAKE_SYSTEM_NAME STREQUAL "Windows") diff --git a/src/resources/Info.plist.in b/src/resources/Info.plist.in new file mode 100644 index 0000000..84bb6ce --- /dev/null +++ b/src/resources/Info.plist.in @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + @MACOSX_BUNDLE_EXECUTABLE_NAME@ + CFBundleIconFile + @MACOSX_BUNDLE_ICON_FILE@ + CFBundleIdentifier + @MACOSX_BUNDLE_GUI_IDENTIFIER@ + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + @MACOSX_BUNDLE_BUNDLE_NAME@ + CFBundlePackageType + APPL + CFBundleShortVersionString + @MACOSX_BUNDLE_SHORT_VERSION_STRING@ + CFBundleVersion + @MACOSX_BUNDLE_BUNDLE_VERSION@ + NSHumanReadableCopyright + @MACOSX_BUNDLE_COPYRIGHT@ + NSHighResolutionCapable + + NSMicrophoneUsageDescription + projectM requires microphone access to visualize audio input. + + diff --git a/src/resources/projectMSDL.entitlements b/src/resources/projectMSDL.entitlements new file mode 100644 index 0000000..d459cb2 --- /dev/null +++ b/src/resources/projectMSDL.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.device.audio-input + + + From afc7822ac619103735258f17433a5d63d1bdff82 Mon Sep 17 00:00:00 2001 From: Mischa Date: Sat, 17 Jan 2026 19:54:35 -0800 Subject: [PATCH 3/4] Fix signing for Frameworks, rename job, add trailing newline - Sign dylibs in Contents/Frameworks (SDL2, Poco) - Rename misleading build-deb job to build-pkg - Add missing newline at end of component plist Co-Authored-By: Claude Opus 4.5 --- .github/workflows/release-macos.yaml | 10 ++++++++-- src/resources/projectMSDL-component.plist | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index ff5e43d..0d1f909 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -20,7 +20,7 @@ on: required: true jobs: - build-deb: + build-pkg: name: ProductBuild Installer, macOS x86_64+arm64 runs-on: macos-latest @@ -158,7 +158,13 @@ jobs: IDENTITY="Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" ENTITLEMENTS="${{ github.workspace }}/frontend-sdl2/src/resources/projectMSDL.entitlements" - # Sign all dylibs first (if PlugIns directory exists) + # Sign frameworks first (SDL2, Poco, etc.) + if [ -d "$APP_PATH/Contents/Frameworks" ]; then + find "$APP_PATH/Contents/Frameworks" \( -name "*.dylib" -o -name "*.framework" \) -exec \ + codesign --force --options runtime --sign "$IDENTITY" {} \; + fi + + # Sign plugins if present if [ -d "$APP_PATH/Contents/PlugIns" ]; then find "$APP_PATH/Contents/PlugIns" -name "*.dylib" -exec \ codesign --force --options runtime --sign "$IDENTITY" {} \; diff --git a/src/resources/projectMSDL-component.plist b/src/resources/projectMSDL-component.plist index 9d2e36c..b33c936 100644 --- a/src/resources/projectMSDL-component.plist +++ b/src/resources/projectMSDL-component.plist @@ -15,4 +15,4 @@ projectM.app - \ No newline at end of file + From 7a07229428c51378f43843cf160bcddc21ef70ff Mon Sep 17 00:00:00 2001 From: Kai Blaschke Date: Mon, 19 Jan 2026 22:06:09 +0100 Subject: [PATCH 4/4] Add ZIP and DMG artifacts to macOS release build --- .github/workflows/release-macos.yaml | 105 ++++++++++++++++++++------- src/resources/dmg_background.png | Bin 0 -> 75052 bytes 2 files changed, 79 insertions(+), 26 deletions(-) create mode 100644 src/resources/dmg_background.png diff --git a/.github/workflows/release-macos.yaml b/.github/workflows/release-macos.yaml index 0d1f909..46beebb 100644 --- a/.github/workflows/release-macos.yaml +++ b/.github/workflows/release-macos.yaml @@ -21,7 +21,7 @@ on: jobs: build-pkg: - name: ProductBuild Installer, macOS x86_64+arm64 + name: ProductBuild and DMG Installers, macOS x86_64+arm64 runs-on: macos-latest steps: @@ -117,20 +117,6 @@ jobs: repository: projectM-visualizer/presets-milkdrop-texture-pack path: presets-milkdrop-texture-pack - - name: Build projectMSDL - run: | - mkdir cmake-build-frontend-sdl2 - cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \ - '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \ - -DCMAKE_BUILD_TYPE=Release \ - -DENABLE_FREETYPE=OFF \ - "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \ - "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \ - "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \ - -DENABLE_INSTALL_BDEPS=ON - cmake --build cmake-build-frontend-sdl2 --parallel - cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install" - - name: Import Code Signing Certificates env: MACOS_CERTIFICATE_APPLICATION: ${{ secrets.MACOS_CERTIFICATE_APPLICATION }} @@ -152,6 +138,20 @@ jobs: rm app_cert.p12 installer_cert.p12 + - name: Build projectMSDL + run: | + mkdir cmake-build-frontend-sdl2 + cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \ + '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_FREETYPE=OFF \ + "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \ + "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \ + "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \ + -DENABLE_INSTALL_BDEPS=ON + cmake --build cmake-build-frontend-sdl2 --parallel + cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install" + - name: Sign Application Bundle run: | APP_PATH="${{ github.workspace }}/install/projectM.app" @@ -180,7 +180,7 @@ jobs: # Verify codesign --verify --deep --strict "$APP_PATH" - - name: Notarize Application + - name: Notarize Application Bundle env: API_KEY_BASE64: ${{ secrets.MACOS_NOTARY_API_KEY }} API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} @@ -202,11 +202,17 @@ jobs: xcrun stapler staple "${{ github.workspace }}/install/projectM.app" - - name: Package projectMSDL - run: | - # Get version from CMake - VERSION=$(grep "project(projectMSDL" frontend-sdl2/CMakeLists.txt | sed -E 's/.*VERSION ([0-9.]+).*/\1/') + - name: Upload .app Bundle Artifact + uses: actions/upload-artifact@v4 + with: + name: projectMSDL-macOS-Universal-APP + path: install/ + - name: Create projectMSDL PKG Installer + run: | + # Get version from CMake cache + VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)') + # Build component package from signed app pkgbuild \ --root "${{ github.workspace }}/install" \ @@ -231,7 +237,7 @@ jobs: rm "projectM-${VERSION}-macOS-universal-unsigned.pkg" - - name: Notarize Package + - name: Notarize PKG Installer env: API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }} @@ -246,11 +252,58 @@ jobs: xcrun stapler staple "$PKG_FILE" - # Clean up API key - rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8 - - - name: Upload Artifact + - name: Upload PKG Installer Artifact uses: actions/upload-artifact@v4 with: - name: projectMSDL-macOS-Universal + name: projectMSDL-macOS-Universal-PKG path: projectM-*.pkg + + - name: Create projectMSDL DMG Image + run: | + # Get version from CMake cache + VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)') + + # Install create-dmg + brew install create-dmg + + # Build and sign DMG image + create-dmg \ + --volname "projectM Installer" \ + --volicon "frontend-sdl2/src/resources/icons/icon.icns" \ + --background "frontend-sdl2/src/resources/dmg_background.png" \ + --window-pos 200 120 \ + --window-size 800 400 \ + --icon-size 100 \ + --icon "projectM.app" 200 190 \ + --hide-extension "projectM.app" \ + --app-drop-link 600 185 \ + --codesign "Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" \ + "projectM-${VERSION}-macOS-universal.dmg" \ + "install/" + + - name: Notarize DMG Installer + env: + API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} + API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }} + run: | + DMG_FILE=$(ls projectM-*.dmg | head -1) + + xcrun notarytool submit "$DMG_FILE" \ + --key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \ + --key-id "$API_KEY_ID" \ + --issuer "$API_ISSUER_ID" \ + --wait + + xcrun stapler staple "$DMG_FILE" + + - name: Upload DMG Installer Artifact + uses: actions/upload-artifact@v4 + with: + name: projectMSDL-macOS-Universal-DMG + path: projectM-*.dmg + + - name: Cleanup Notarization API Key + if: ${{ always() }} + env: + API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }} + run: rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8 diff --git a/src/resources/dmg_background.png b/src/resources/dmg_background.png new file mode 100644 index 0000000000000000000000000000000000000000..a554f39fda5a0804b84052291d78e693ce821cfe GIT binary patch literal 75052 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 MRMl0fg4#s<4~JHF-2eap literal 0 HcmV?d00001