Skip to content

Commit e0fa0bd

Browse files
fix: ad-hoc signing for macOS when no Developer ID cert
1 parent 2fd91e6 commit e0fa0bd

2 files changed

Lines changed: 24 additions & 19 deletions

File tree

.github/workflows/release.yml

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,21 +68,30 @@ jobs:
6868
# APPLE_ID — Apple ID for notarization
6969
# APPLE_APP_SPECIFIC_PASSWORD — app-specific password for notarization
7070
- name: Import macOS signing certificate
71-
if: matrix.platform == 'mac' && env.APPLE_CERTIFICATE != ''
71+
if: matrix.platform == 'mac'
72+
shell: bash
7273
env:
73-
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
74-
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
74+
_APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
75+
_APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
7576
run: |
76-
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
77-
security create-keychain -p "temp-keychain-password" build.keychain
78-
security import certificate.p12 -k build.keychain \
79-
-P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
80-
security list-keychains -s build.keychain
81-
security default-keychain -s build.keychain
82-
security unlock-keychain -p "temp-keychain-password" build.keychain
83-
security set-key-partition-list \
84-
-S apple-tool:,apple:,codesign: -s -k "temp-keychain-password" build.keychain
85-
rm certificate.p12
77+
if [ -n "$_APPLE_CERTIFICATE" ]; then
78+
echo "$_APPLE_CERTIFICATE" | base64 --decode > certificate.p12
79+
security create-keychain -p "temp-keychain-password" build.keychain
80+
security import certificate.p12 -k build.keychain \
81+
-P "$_APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
82+
security list-keychains -s build.keychain
83+
security default-keychain -s build.keychain
84+
security unlock-keychain -p "temp-keychain-password" build.keychain
85+
security set-key-partition-list \
86+
-S apple-tool:,apple:,codesign: -s -k "temp-keychain-password" build.keychain
87+
rm certificate.p12
88+
echo "CSC_IDENTITY_AUTO_DISCOVERY=true" >> $GITHUB_ENV
89+
echo "✓ Developer ID certificate imported — full signing enabled."
90+
else
91+
echo "CSC_IDENTITY=-" >> $GITHUB_ENV
92+
echo "CSC_IDENTITY_AUTO_DISCOVERY=false" >> $GITHUB_ENV
93+
echo "✓ No certificate — using ad-hoc signing."
94+
fi
8695
8796
# Set Windows signing env only when the cert secret is actually configured.
8897
# Passing an empty WIN_CSC_LINK causes electron-builder to resolve it as
@@ -106,11 +115,10 @@ jobs:
106115
107116
- name: Build & package
108117
env:
109-
# macOS signing (no-op if secrets absent)
118+
# macOS signing — CSC_IDENTITY & CSC_IDENTITY_AUTO_DISCOVERY set by previous step
110119
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
111120
APPLE_ID: ${{ secrets.APPLE_ID }}
112121
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
113-
CSC_IDENTITY_AUTO_DISCOVERY: ${{ secrets.APPLE_CERTIFICATE != '' && 'true' || 'false' }}
114122
# GitHub token for electron-updater publish
115123
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
116124
run: npm run build:${{ matrix.platform }}

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@
105105
"dmg",
106106
"zip"
107107
],
108-
"icon": "resources/icon.icns",
109-
"notarize": {
110-
"teamId": "${APPLE_TEAM_ID}"
111-
}
108+
"icon": "resources/icon.icns"
112109
},
113110
"win": {
114111
"target": [

0 commit comments

Comments
 (0)