77 pull_request :
88 branches : [ main ]
99
10- env :
11- KEYCHAIN_NAME : build.keychain-db
12- KEYCHAIN_PASSWORD : ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
13-
1410jobs :
1511 test :
1612 name : Run Tests
@@ -43,12 +39,32 @@ jobs:
4339 - name : Select Xcode
4440 run : sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer || sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
4541
46- - name : Setup codesigning
47- if : ${{ secrets.MACOS_CERTIFICATE_P12 != '' }}
42+ - name : Detect codesigning configuration
43+ env :
44+ HAS_CERT : ${{ secrets.MACOS_CERTIFICATE_P12 }}
45+ HAS_NOTARIZE : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
46+ run : |
47+ if [ -n "$HAS_CERT" ]; then
48+ echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
49+ else
50+ echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
51+ fi
52+ if [ -n "$HAS_NOTARIZE" ]; then
53+ echo "NOTARIZE_ENABLED=true" >> $GITHUB_ENV
54+ else
55+ echo "NOTARIZE_ENABLED=false" >> $GITHUB_ENV
56+ fi
57+
58+ - name : Setup codesigning keychain
59+ if : env.CODESIGN_ENABLED == 'true'
4860 env :
4961 CERTIFICATE_P12 : ${{ secrets.MACOS_CERTIFICATE_P12 }}
5062 CERTIFICATE_PASSWORD : ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
63+ KEYCHAIN_PASSWORD : ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
5164 run : |
65+ KEYCHAIN_NAME="build.keychain-db"
66+ echo "KEYCHAIN_NAME=$KEYCHAIN_NAME" >> $GITHUB_ENV
67+
5268 # Decode certificate
5369 echo "$CERTIFICATE_P12" | base64 --decode > certificate.p12
5470
7591 rm certificate.p12
7692
7793 echo "CODESIGN_IDENTITY=${{ secrets.MACOS_SIGNING_IDENTITY }}" >> $GITHUB_ENV
78- echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
79-
80- - name : Set ad-hoc signing (fallback)
81- if : ${{ secrets.MACOS_CERTIFICATE_P12 == '' }}
82- run : |
83- echo "CODESIGN_IDENTITY=-" >> $GITHUB_ENV
84- echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
8594
8695 - name : Build arm64
8796 run : |
@@ -166,7 +175,7 @@ jobs:
166175 ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "LangSwitcher-${VERSION}-arm64.zip"
167176
168177 - name : Notarize DMG
169- if : ${{ secrets.MACOS_CERTIFICATE_P12 != ' ' && secrets.MACOS_NOTARIZATION_APPLE_ID != '' }}
178+ if : env.CODESIGN_ENABLED == 'true ' && env.NOTARIZE_ENABLED == 'true'
170179 env :
171180 APPLE_ID : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
172181 APPLE_PASSWORD : ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
@@ -183,7 +192,7 @@ jobs:
183192 xcrun stapler staple "$DMG_NAME"
184193
185194 - name : Cleanup keychain
186- if : ${{ always() && secrets.MACOS_CERTIFICATE_P12 != '' }}
195+ if : always() && env.CODESIGN_ENABLED == 'true'
187196 run : |
188197 security delete-keychain "$KEYCHAIN_NAME" 2>/dev/null || true
189198
@@ -212,12 +221,31 @@ jobs:
212221 - name : Select Xcode
213222 run : sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer || sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
214223
215- - name : Setup codesigning
216- if : ${{ secrets.MACOS_CERTIFICATE_P12 != '' }}
224+ - name : Detect codesigning configuration
225+ env :
226+ HAS_CERT : ${{ secrets.MACOS_CERTIFICATE_P12 }}
227+ HAS_NOTARIZE : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
228+ run : |
229+ if [ -n "$HAS_CERT" ]; then
230+ echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
231+ else
232+ echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
233+ fi
234+ if [ -n "$HAS_NOTARIZE" ]; then
235+ echo "NOTARIZE_ENABLED=true" >> $GITHUB_ENV
236+ else
237+ echo "NOTARIZE_ENABLED=false" >> $GITHUB_ENV
238+ fi
239+
240+ - name : Setup codesigning keychain
241+ if : env.CODESIGN_ENABLED == 'true'
217242 env :
218243 CERTIFICATE_P12 : ${{ secrets.MACOS_CERTIFICATE_P12 }}
219244 CERTIFICATE_PASSWORD : ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
245+ KEYCHAIN_PASSWORD : ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
220246 run : |
247+ KEYCHAIN_NAME="build.keychain-db"
248+ echo "KEYCHAIN_NAME=$KEYCHAIN_NAME" >> $GITHUB_ENV
221249 echo "$CERTIFICATE_P12" | base64 --decode > certificate.p12
222250 security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"
223251 security set-keychain-settings -lut 21600 "$KEYCHAIN_NAME"
@@ -232,13 +260,6 @@ jobs:
232260 security list-keychains -d user -s "$KEYCHAIN_NAME" $(security list-keychains -d user | tr -d '"')
233261 rm certificate.p12
234262 echo "CODESIGN_IDENTITY=${{ secrets.MACOS_SIGNING_IDENTITY }}" >> $GITHUB_ENV
235- echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
236-
237- - name : Set ad-hoc signing (fallback)
238- if : ${{ secrets.MACOS_CERTIFICATE_P12 == '' }}
239- run : |
240- echo "CODESIGN_IDENTITY=-" >> $GITHUB_ENV
241- echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
242263
243264 - name : Build x86_64
244265 run : |
@@ -322,7 +343,7 @@ jobs:
322343 ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "LangSwitcher-${VERSION}-x86_64.zip"
323344
324345 - name : Notarize DMG
325- if : ${{ secrets.MACOS_CERTIFICATE_P12 != ' ' && secrets.MACOS_NOTARIZATION_APPLE_ID != '' }}
346+ if : env.CODESIGN_ENABLED == 'true ' && env.NOTARIZE_ENABLED == 'true'
326347 env :
327348 APPLE_ID : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
328349 APPLE_PASSWORD : ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
@@ -339,7 +360,7 @@ jobs:
339360 xcrun stapler staple "$DMG_NAME"
340361
341362 - name : Cleanup keychain
342- if : ${{ always() && secrets.MACOS_CERTIFICATE_P12 != '' }}
363+ if : always() && env.CODESIGN_ENABLED == 'true'
343364 run : |
344365 security delete-keychain "$KEYCHAIN_NAME" 2>/dev/null || true
345366
@@ -368,12 +389,31 @@ jobs:
368389 - name : Select Xcode
369390 run : sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer || sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
370391
371- - name : Setup codesigning
372- if : ${{ secrets.MACOS_CERTIFICATE_P12 != '' }}
392+ - name : Detect codesigning configuration
393+ env :
394+ HAS_CERT : ${{ secrets.MACOS_CERTIFICATE_P12 }}
395+ HAS_NOTARIZE : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
396+ run : |
397+ if [ -n "$HAS_CERT" ]; then
398+ echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
399+ else
400+ echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
401+ fi
402+ if [ -n "$HAS_NOTARIZE" ]; then
403+ echo "NOTARIZE_ENABLED=true" >> $GITHUB_ENV
404+ else
405+ echo "NOTARIZE_ENABLED=false" >> $GITHUB_ENV
406+ fi
407+
408+ - name : Setup codesigning keychain
409+ if : env.CODESIGN_ENABLED == 'true'
373410 env :
374411 CERTIFICATE_P12 : ${{ secrets.MACOS_CERTIFICATE_P12 }}
375412 CERTIFICATE_PASSWORD : ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
413+ KEYCHAIN_PASSWORD : ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
376414 run : |
415+ KEYCHAIN_NAME="build.keychain-db"
416+ echo "KEYCHAIN_NAME=$KEYCHAIN_NAME" >> $GITHUB_ENV
377417 echo "$CERTIFICATE_P12" | base64 --decode > certificate.p12
378418 security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"
379419 security set-keychain-settings -lut 21600 "$KEYCHAIN_NAME"
@@ -388,13 +428,6 @@ jobs:
388428 security list-keychains -d user -s "$KEYCHAIN_NAME" $(security list-keychains -d user | tr -d '"')
389429 rm certificate.p12
390430 echo "CODESIGN_IDENTITY=${{ secrets.MACOS_SIGNING_IDENTITY }}" >> $GITHUB_ENV
391- echo "CODESIGN_ENABLED=true" >> $GITHUB_ENV
392-
393- - name : Set ad-hoc signing (fallback)
394- if : ${{ secrets.MACOS_CERTIFICATE_P12 == '' }}
395- run : |
396- echo "CODESIGN_IDENTITY=-" >> $GITHUB_ENV
397- echo "CODESIGN_ENABLED=false" >> $GITHUB_ENV
398431
399432 - name : Build Universal (arm64 + x86_64)
400433 run : |
@@ -478,7 +511,7 @@ jobs:
478511 ditto -c -k --sequesterRsrc --keepParent "$APP_PATH" "LangSwitcher-${VERSION}-universal.zip"
479512
480513 - name : Notarize DMG
481- if : ${{ secrets.MACOS_CERTIFICATE_P12 != ' ' && secrets.MACOS_NOTARIZATION_APPLE_ID != '' }}
514+ if : env.CODESIGN_ENABLED == 'true ' && env.NOTARIZE_ENABLED == 'true'
482515 env :
483516 APPLE_ID : ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
484517 APPLE_PASSWORD : ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
@@ -495,7 +528,7 @@ jobs:
495528 xcrun stapler staple "$DMG_NAME"
496529
497530 - name : Cleanup keychain
498- if : ${{ always() && secrets.MACOS_CERTIFICATE_P12 != '' }}
531+ if : always() && env.CODESIGN_ENABLED == 'true'
499532 run : |
500533 security delete-keychain "$KEYCHAIN_NAME" 2>/dev/null || true
501534
0 commit comments