Skip to content

Commit ff4e414

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

File tree

2 files changed

+75
-22
lines changed

2 files changed

+75
-22
lines changed

.github/workflows/release-macos.yaml

Lines changed: 75 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,20 @@ 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+
-DCMAKE_BUILD_TYPE=Release \
147+
-DENABLE_FREETYPE=OFF \
148+
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
149+
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
150+
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
151+
-DENABLE_INSTALL_BDEPS=ON
152+
cmake --build cmake-build-frontend-sdl2 --parallel
153+
cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
154+
155155
- name: Sign Application Bundle
156156
run: |
157157
APP_PATH="${{ github.workspace }}/install/projectM.app"
@@ -180,7 +180,7 @@ jobs:
180180
# Verify
181181
codesign --verify --deep --strict "$APP_PATH"
182182
183-
- name: Notarize Application
183+
- name: Notarize Application Bundle
184184
env:
185185
API_KEY_BASE64: ${{ secrets.MACOS_NOTARY_API_KEY }}
186186
API_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
@@ -202,11 +202,17 @@ jobs:
202202
203203
xcrun stapler staple "${{ github.workspace }}/install/projectM.app"
204204
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/')
205+
- name: Upload .app Bundle Artifact
206+
uses: actions/upload-artifact@v4
207+
with:
208+
name: projectMSDL-macOS-Universal-APP
209+
path: install/projectM.app/
209210

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

src/resources/dmg_background.png

73.3 KB
Loading

0 commit comments

Comments
 (0)