Skip to content

Commit c3c5862

Browse files
committed
fix workflow
1 parent b2d0d9b commit c3c5862

3 files changed

Lines changed: 385 additions & 226 deletions

File tree

.github/workflows/release.yml

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ permissions:
1212
jobs:
1313
build:
1414
runs-on: macos-latest
15-
15+
1616
steps:
1717
- name: Checkout code
1818
uses: actions/checkout@v5
@@ -26,48 +26,88 @@ jobs:
2626
- name: Install dependencies
2727
run: npm ci
2828

29-
- name: Import code signing certificate
29+
- name: Setup code signing
3030
if: env.APPLE_CERTIFICATE != ''
3131
env:
3232
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
3333
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
3434
run: |
35-
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
36-
security create-keychain -p "" build.keychain
35+
# Create keychain
36+
security create-keychain -p "build" build.keychain
3737
security default-keychain -s build.keychain
38-
security unlock-keychain -p "" build.keychain
39-
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
40-
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "" build.keychain
41-
rm certificate.p12
38+
security unlock-keychain -p "build" build.keychain
39+
security set-keychain-settings -t 3600 -u build.keychain
40+
41+
# Import certificate
42+
echo "$APPLE_CERTIFICATE" | base64 --decode > $RUNNER_TEMP/certificate.p12
43+
security import $RUNNER_TEMP/certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
44+
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "build" build.keychain
45+
security list-keychains -d user -s build.keychain $(security list-keychains -d user | tr -d '"')
46+
rm $RUNNER_TEMP/certificate.p12
47+
48+
# Verify certificate import
49+
echo "=== Signing identities ==="
50+
security find-identity -v -p codesigning
51+
52+
IDENTITY_COUNT=$(security find-identity -v -p codesigning | grep -c "valid identities found" || echo "0")
53+
if echo "$IDENTITY_COUNT" | grep -q "0"; then
54+
echo "WARNING: No code signing identity found. Check that APPLE_CERTIFICATE contains a Developer ID Application certificate with private key."
55+
fi
4256
4357
- name: Build application
4458
run: npm run build
4559

60+
- name: Sign native binary
61+
if: env.APPLE_CERTIFICATE != ''
62+
env:
63+
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
64+
run: |
65+
security unlock-keychain -p "build" build.keychain
66+
67+
IDENTITY=$(security find-identity -v -p codesigning | grep "Developer ID Application" | head -1 | awk -F'"' '{print $2}')
68+
69+
if [ -n "$IDENTITY" ] && [ -f "native/mouse-telemetry" ]; then
70+
echo "Signing native/mouse-telemetry with: $IDENTITY"
71+
codesign --force --options runtime --timestamp --sign "$IDENTITY" native/mouse-telemetry
72+
codesign -vv native/mouse-telemetry
73+
else
74+
echo "Skipping native binary signing (no identity or binary not found)"
75+
fi
76+
4677
- name: Package application
4778
env:
48-
APPLE_ID: ${{ secrets.APPLE_ID }}
49-
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
50-
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
51-
run: npm run package:mac -- --publish never
79+
CSC_KEYCHAIN: build.keychain
80+
CSC_KEYCHAIN_PASSWORD: build
81+
run: |
82+
security unlock-keychain -p "build" build.keychain
83+
npm run package:mac -- --publish never
5284
5385
- name: Notarize application
54-
if: env.APPLE_ID != '' && env.APPLE_APP_SPECIFIC_PASSWORD != ''
5586
env:
5687
APPLE_ID: ${{ secrets.APPLE_ID }}
5788
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
5889
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
5990
run: |
60-
xcrun notarytool submit release/*.zip \
91+
# Find the zip file
92+
ZIP_FILE=$(find release -name "*.zip" | head -1)
93+
echo "Notarizing: $ZIP_FILE"
94+
95+
# Submit for notarization
96+
xcrun notarytool submit "$ZIP_FILE" \
6197
--apple-id "$APPLE_ID" \
6298
--password "$APPLE_APP_SPECIFIC_PASSWORD" \
6399
--team-id "$APPLE_TEAM_ID" \
64100
--wait
65101
66102
- name: Staple notarization
67-
if: env.APPLE_ID != '' && env.APPLE_APP_SPECIFIC_PASSWORD != ''
68103
run: |
69-
xcrun stapler staple release/*.dmg
70-
xcrun stapler staple release/*.zip
104+
# Staple the app inside the DMG
105+
for dmg in release/*.dmg; do
106+
if [ -f "$dmg" ]; then
107+
echo "Stapling $dmg"
108+
xcrun stapler staple "$dmg" || echo "Failed to staple $dmg"
109+
fi
110+
done
71111
72112
- name: Upload release artifacts
73113
uses: softprops/action-gh-release@v2
@@ -76,4 +116,3 @@ jobs:
76116
files: |
77117
release/*.dmg
78118
release/*.zip
79-

0 commit comments

Comments
 (0)