Skip to content

Commit d2a1728

Browse files
committed
Add ZIP and DMG artifacts to macOS release build
1 parent afc7822 commit d2a1728

File tree

2 files changed

+74
-22
lines changed

2 files changed

+74
-22
lines changed

.github/workflows/release-macos.yaml

Lines changed: 74 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -117,20 +117,6 @@ jobs:
117117
repository: projectM-visualizer/presets-milkdrop-texture-pack
118118
path: presets-milkdrop-texture-pack
119119

120-
- name: Build projectMSDL
121-
run: |
122-
mkdir cmake-build-frontend-sdl2
123-
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
124-
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
125-
-DCMAKE_BUILD_TYPE=Release \
126-
-DENABLE_FREETYPE=OFF \
127-
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
128-
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
129-
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
130-
-DENABLE_INSTALL_BDEPS=ON
131-
cmake --build cmake-build-frontend-sdl2 --parallel
132-
cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
133-
134120
- name: Import Code Signing Certificates
135121
env:
136122
MACOS_CERTIFICATE_APPLICATION: ${{ secrets.MACOS_CERTIFICATE_APPLICATION }}
@@ -152,6 +138,19 @@ jobs:
152138
153139
rm app_cert.p12 installer_cert.p12
154140
141+
- name: Build projectMSDL
142+
run: |
143+
mkdir cmake-build-frontend-sdl2
144+
cmake -G Xcode -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
145+
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
146+
-DENABLE_FREETYPE=OFF \
147+
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
148+
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
149+
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
150+
-DENABLE_INSTALL_BDEPS=ON
151+
cmake --build cmake-build-frontend-sdl2 --config Release --parallel
152+
cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
153+
155154
- name: Sign Application Bundle
156155
run: |
157156
APP_PATH="${{ github.workspace }}/install/projectM.app"
@@ -180,7 +179,7 @@ jobs:
180179
# Verify
181180
codesign --verify --deep --strict "$APP_PATH"
182181
183-
- name: Notarize Application
182+
- name: Notarize Application Bundle
184183
env:
185184
API_KEY_BASE64: ${{ secrets.MACOS_NOTARY_API_KEY }}
186185
API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
@@ -202,11 +201,17 @@ jobs:
202201
203202
xcrun stapler staple "${{ github.workspace }}/install/projectM.app"
204203
205-
- name: Package projectMSDL
206-
run: |
207-
# Get version from CMake
208-
VERSION=$(grep "project(projectMSDL" frontend-sdl2/CMakeLists.txt | sed -E 's/.*VERSION ([0-9.]+).*/\1/')
204+
- name: Upload .app Bundle Artifact
205+
uses: actions/upload-artifact@v4
206+
with:
207+
name: projectMSDL-macOS-Universal-APP
208+
path: install/projectM.app/
209209

210+
- name: Create projectMSDL PKG Installer
211+
run: |
212+
# Get version from CMake cache
213+
VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
214+
210215
# Build component package from signed app
211216
pkgbuild \
212217
--root "${{ github.workspace }}/install" \
@@ -231,7 +236,7 @@ jobs:
231236
232237
rm "projectM-${VERSION}-macOS-universal-unsigned.pkg"
233238
234-
- name: Notarize Package
239+
- name: Notarize PKG Installer
235240
env:
236241
API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
237242
API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
@@ -249,8 +254,55 @@ jobs:
249254
# Clean up API key
250255
rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
251256
252-
- name: Upload Artifact
257+
- name: Upload PKG Installer Artifact
253258
uses: actions/upload-artifact@v4
254259
with:
255-
name: projectMSDL-macOS-Universal
260+
name: projectMSDL-macOS-Universal-PKG
256261
path: projectM-*.pkg
262+
263+
- name: Create projectMSDL DMG Image
264+
run: |
265+
# Get version from CMake cache
266+
VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
267+
268+
# Install create-dmg
269+
brew install create-dmg
270+
271+
# Build and sign DMG image
272+
create-dmg \
273+
--volname "projectM Installer" \
274+
--volicon "frontend-sdl2/src/resources/icons/icon.icns" \
275+
--background "frontend-sdl2/src/resources/dmg_background.png" \
276+
--window-pos 200 120 \
277+
--window-size 800 400 \
278+
--icon-size 100 \
279+
--icon "projectM.app" 200 190 \
280+
--hide-extension "projectM.app" \
281+
--app-drop-link 600 185 \
282+
--codesign "Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" \
283+
"projectM-${VERSION}-macOS-universal.dmg" \
284+
"install/"
285+
286+
- name: Notarize DMG Installer
287+
env:
288+
API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
289+
API_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
290+
run: |
291+
DMG_FILE=$(ls projectM-*.dmg | head -1)
292+
293+
xcrun notarytool submit "$DMG_FILE" \
294+
--key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \
295+
--key-id "$API_KEY_ID" \
296+
--issuer "$API_ISSUER_ID" \
297+
--wait
298+
299+
xcrun stapler staple "$DMG_FILE"
300+
301+
# Clean up API key
302+
rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
303+
304+
- name: Upload DMG Installer Artifact
305+
uses: actions/upload-artifact@v4
306+
with:
307+
name: projectMSDL-macOS-Universal-DMG
308+
path: projectM-*.dmg

src/resources/dmg_background.png

73.3 KB
Loading

0 commit comments

Comments
 (0)