@@ -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 }}
0 commit comments