|
1 | 1 | # Build and attach VoxClaw.app to GitHub Releases when a version tag is pushed. |
2 | 2 | # Usage: git tag v1.0.0 && git push origin v1.0.0 |
3 | 3 | # |
4 | | -# For Developer ID signing (no Gatekeeper warning), add these repo secrets: |
| 4 | +# For a Gatekeeper-clean download you need BOTH Developer ID signing AND |
| 5 | +# notarization (signing alone is rejected as "Unnotarized Developer ID"). |
| 6 | +# Signing secrets: |
5 | 7 | # MACOS_CERTIFICATE_P12_BASE64 - base64 of your .p12 (base64 -i cert.p12 | pbcopy) |
6 | 8 | # MACOS_CERTIFICATE_PASSWORD - password for the .p12 |
7 | 9 | # APP_IDENTITY - e.g. "Developer ID Application: Your Name (TEAM_ID)" |
| 10 | +# Notarization secrets: |
| 11 | +# APPLE_ID - Apple ID email for the developer account |
| 12 | +# APPLE_TEAM_ID - 10-char team id (e.g. X2RKZ5TG99) |
| 13 | +# APPLE_NOTARY_PASSWORD - app-specific password from appleid.apple.com |
8 | 14 | name: Release |
9 | 15 |
|
10 | 16 | on: |
|
53 | 59 | swift build -c release |
54 | 60 | ./Scripts/package_app.sh release |
55 | 61 |
|
| 62 | + # Notarize so downloads don't hit a Gatekeeper prompt. A Developer ID |
| 63 | + # signature alone is rejected as "Unnotarized Developer ID"; notarization + |
| 64 | + # stapling is what makes it launch cleanly. Skips gracefully if creds absent. |
| 65 | + - name: Notarize & staple |
| 66 | + env: |
| 67 | + APPLE_ID: ${{ secrets.APPLE_ID }} |
| 68 | + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} |
| 69 | + APPLE_NOTARY_PASSWORD: ${{ secrets.APPLE_NOTARY_PASSWORD }} |
| 70 | + run: | |
| 71 | + if [[ -z "${APPLE_NOTARY_PASSWORD:-}" || -z "${APPLE_ID:-}" || -z "${APPLE_TEAM_ID:-}" ]]; then |
| 72 | + echo "Notarization credentials not set; skipping (build will be unnotarized)." |
| 73 | + exit 0 |
| 74 | + fi |
| 75 | + ditto -c -k --sequesterRsrc --keepParent VoxClaw.app notarize.zip |
| 76 | + xcrun notarytool submit notarize.zip \ |
| 77 | + --apple-id "$APPLE_ID" --team-id "$APPLE_TEAM_ID" --password "$APPLE_NOTARY_PASSWORD" --wait |
| 78 | + xcrun stapler staple VoxClaw.app |
| 79 | + xcrun stapler validate VoxClaw.app |
| 80 | + rm -f notarize.zip |
| 81 | +
|
56 | 82 | - name: Zip app |
57 | 83 | run: ditto -c -k --sequesterRsrc --keepParent VoxClaw.app VoxClaw.zip |
58 | 84 |
|
|
0 commit comments