Skip to content

Commit 45d91b2

Browse files
authored
feat: add macOS x86_64 (Intel) build support (Dimillian#571)
1 parent f7b66ba commit 45d91b2

1 file changed

Lines changed: 49 additions & 22 deletions

File tree

.github/workflows/release.yml

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,24 @@ permissions:
99

1010
jobs:
1111
build_macos:
12-
runs-on: macos-latest
12+
name: macOS bundles (${{ matrix.arch }})
13+
runs-on: ${{ matrix.runner }}
1314
environment: release
1415
env:
1516
CODESIGN_IDENTITY: ${{ vars.CODESIGN_IDENTITY }}
1617
NOTARY_PROFILE_NAME: ${{ vars.NOTARY_PROFILE_NAME }}
1718
APPLE_TEAM_ID: ${{ vars.APPLE_TEAM_ID }}
1819
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
1920
TAURI_SIGNING_PRIVATE_KEY_B64: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_B64 }}
21+
TARGET_ARCH: ${{ matrix.arch }}
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
include:
26+
- runner: macos-latest
27+
arch: aarch64
28+
- runner: macos-15-intel
29+
arch: x86_64
2030
steps:
2131
- name: Checkout
2232
uses: actions/checkout@v4
@@ -135,12 +145,12 @@ jobs:
135145
136146
ditto -c -k --keepParent \
137147
"src-tauri/target/release/bundle/macos/Codex Monitor.app" \
138-
release-artifacts/CodexMonitor.zip
148+
release-artifacts/CodexMonitor_${TARGET_ARCH}.zip
139149
140150
hdiutil create -volname "Codex Monitor" \
141151
-srcfolder release-artifacts/dmg-root \
142152
-ov -format UDZO \
143-
release-artifacts/CodexMonitor_${VERSION}_aarch64.dmg
153+
release-artifacts/CodexMonitor_${VERSION}_${TARGET_ARCH}.dmg
144154
145155
COPYFILE_DISABLE=1 tar -czf \
146156
"src-tauri/target/release/bundle/macos/Codex Monitor.app.tar.gz" \
@@ -152,19 +162,19 @@ jobs:
152162
"src-tauri/target/release/bundle/macos/Codex Monitor.app.tar.gz"
153163
154164
cp "src-tauri/target/release/bundle/macos/Codex Monitor.app.tar.gz" \
155-
release-artifacts/CodexMonitor.app.tar.gz
165+
release-artifacts/CodexMonitor_${TARGET_ARCH}.app.tar.gz
156166
cp "src-tauri/target/release/bundle/macos/Codex Monitor.app.tar.gz.sig" \
157-
release-artifacts/CodexMonitor.app.tar.gz.sig
167+
release-artifacts/CodexMonitor_${TARGET_ARCH}.app.tar.gz.sig
158168
159169
- name: Upload macOS artifacts
160170
uses: actions/upload-artifact@v4
161171
with:
162-
name: macos-artifacts
172+
name: macos-artifacts-${{ matrix.arch }}
163173
path: |
164-
release-artifacts/CodexMonitor.zip
165-
release-artifacts/CodexMonitor_*_aarch64.dmg
166-
release-artifacts/CodexMonitor.app.tar.gz
167-
release-artifacts/CodexMonitor.app.tar.gz.sig
174+
release-artifacts/CodexMonitor_${{ matrix.arch }}.zip
175+
release-artifacts/CodexMonitor_*_${{ matrix.arch }}.dmg
176+
release-artifacts/CodexMonitor_${{ matrix.arch }}.app.tar.gz
177+
release-artifacts/CodexMonitor_${{ matrix.arch }}.app.tar.gz.sig
168178
169179
build_linux:
170180
name: linux bundles (${{ matrix.arch }})
@@ -323,8 +333,9 @@ jobs:
323333
- name: Download macOS artifacts
324334
uses: actions/download-artifact@v4
325335
with:
326-
name: macos-artifacts
336+
pattern: macos-artifacts-*
327337
path: release-artifacts
338+
merge-multiple: true
328339

329340
- name: Download Linux bundles
330341
uses: actions/download-artifact@v4
@@ -386,7 +397,6 @@ jobs:
386397
PY
387398
)
388399
389-
SIGNATURE=$(cat release-artifacts/CodexMonitor.app.tar.gz.sig)
390400
LAST_TAG=$(git tag --sort=-version:refname \
391401
| grep -v "^v${VERSION}$" \
392402
| head -n 1 || true)
@@ -446,12 +456,27 @@ jobs:
446456
def release_url(filename):
447457
return f"https://github.com/Dimillian/CodexMonitor/releases/download/v${VERSION}/{quote(filename)}"
448458
449-
platforms = {
450-
"darwin-aarch64": {
451-
"url": release_url("CodexMonitor.app.tar.gz"),
452-
"signature": "${SIGNATURE}",
453-
}
454-
}
459+
platforms = {}
460+
461+
# Find macOS updater bundles for each architecture
462+
macos_tarballs = list(artifacts_dir.glob("CodexMonitor_*.app.tar.gz"))
463+
for tarball in macos_tarballs:
464+
if "aarch64" in tarball.name:
465+
sig_path = tarball.with_suffix(tarball.suffix + ".sig")
466+
if not sig_path.exists():
467+
raise SystemExit(f"Missing signature for {tarball.name}")
468+
platforms["darwin-aarch64"] = {
469+
"url": release_url(tarball.name),
470+
"signature": sig_path.read_text().strip(),
471+
}
472+
elif "x86_64" in tarball.name:
473+
sig_path = tarball.with_suffix(tarball.suffix + ".sig")
474+
if not sig_path.exists():
475+
raise SystemExit(f"Missing signature for {tarball.name}")
476+
platforms["darwin-x86_64"] = {
477+
"url": release_url(tarball.name),
478+
"signature": sig_path.read_text().strip(),
479+
}
455480
456481
appimages = list(artifacts_dir.rglob("*.AppImage.tar.gz"))
457482
if not appimages:
@@ -565,6 +590,9 @@ jobs:
565590
566591
shopt -s nullglob globstar
567592
appimages=(release-artifacts/**/*.AppImage*)
593+
dmgs=(release-artifacts/**/*.dmg)
594+
tarballs=(release-artifacts/**/*.app.tar.gz)
595+
zips=(release-artifacts/CodexMonitor_*.zip)
568596
mapfile -t rpms < <(find release-artifacts -type f -name '*.rpm' | sort)
569597
mapfile -t windows_exes < <(find release-artifacts -type f -name '*.exe*' | sort)
570598
mapfile -t windows_msis < <(find release-artifacts -type f -name '*.msi*' | sort)
@@ -588,10 +616,9 @@ jobs:
588616
--title "v${VERSION}" \
589617
--notes-file release-artifacts/release-notes.md \
590618
--target "$GITHUB_SHA" \
591-
release-artifacts/CodexMonitor.zip \
592-
release-artifacts/CodexMonitor_*_aarch64.dmg \
593-
release-artifacts/CodexMonitor.app.tar.gz \
594-
release-artifacts/CodexMonitor.app.tar.gz.sig \
619+
"${zips[@]}" \
620+
"${dmgs[@]}" \
621+
"${tarballs[@]}" \
595622
"${appimages[@]}" \
596623
"${rpms[@]}" \
597624
"${windows_exes[@]}" \

0 commit comments

Comments
 (0)