Skip to content

Commit da6ed73

Browse files
committed
chore: enhance macOS workflow with manual dispatch, better version handling, and updated code signing logic
1 parent 979a7c7 commit da6ed73

File tree

1 file changed

+55
-21
lines changed

1 file changed

+55
-21
lines changed

.github/workflows/build-mac.yml

Lines changed: 55 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ on:
33
push:
44
tags:
55
- 'v*.*.*'
6+
workflow_dispatch:
7+
inputs:
8+
version:
9+
description: 'Version number (e.g., 1.0.0)'
10+
required: true
11+
type: string
612

713
jobs:
814
mac:
@@ -22,22 +28,42 @@ jobs:
2228
- name: Install dependencies
2329
run: npm ci
2430

25-
- name: Set version from tag
31+
- name: Determine version variables
2632
env:
2733
GITHUB_REF: ${{ github.ref }}
28-
run: npm version "${GITHUB_REF#refs/tags/v}" --no-git-tag-version --allow-same-version
34+
VERSION_INPUT: ${{ github.event.inputs.version }}
35+
run: |
36+
if [ -n "$VERSION_INPUT" ]; then
37+
# Manual trigger with version input
38+
VERSION="$VERSION_INPUT"
39+
else
40+
# Tag trigger
41+
VERSION="${GITHUB_REF#refs/tags/v}"
42+
fi
43+
VERSION_WITHOUT_PRERELEASE=$(echo "$VERSION" | sed 's/-.*//')
44+
45+
echo "VERSION=$VERSION" >> $GITHUB_ENV
46+
echo "VERSION_WITHOUT_PRERELEASE=$VERSION_WITHOUT_PRERELEASE" >> $GITHUB_ENV
47+
48+
echo "Determined VERSION: $VERSION"
49+
echo "Determined VERSION_WITHOUT_PRERELEASE: $VERSION_WITHOUT_PRERELEASE"
50+
51+
- name: Set version from tag or input
52+
run: npm version "$VERSION" --no-git-tag-version --allow-same-version
2953

3054
- name: Build
3155
run: npm run build
3256

3357
- name: Install Apple Code Signing Certificate
3458
env:
35-
MAC_INSTALLER_CERTIFICATE_BASE64: ${{ secrets.APPLE_3RD_PARTY_INSTALLER_SIGNING_CERTIFICATE_BASE64 }}
36-
MAC_DEVELOPMENT_CERTIFICATE_BASE64: ${{ secrets.APPLE_3RD_PARTY_SIGNING_CERTIFICATE_BASE64 }}
37-
MAC_APP_CERTIFICATE_BASE64: ${{ secrets.APPLE_SIGNING_CERTIFICATE_BASE64 }}
38-
MAC_INSTALLER_CERTIFICATE_PATH: ${{ runner.temp }}/mac_installer_certificate.p12
39-
MAC_DEVELOPMENT_CERTIFICATE_PATH: ${{ runner.temp }}/mac_development_certificate.p12
40-
MAC_APP_CERTIFICATE_PATH: ${{ runner.temp }}/mac_app_certificate.p12
59+
MAC_INSTALLER_CERTIFICATE_BASE64: ${{ secrets.MAC_INSTALLER_CERTIFICATE_BASE64 }}
60+
MAC_DEVELOPMENT_CERTIFICATE_BASE64: ${{ secrets.MAC_DEVELOPMENT_CERTIFICATE_BASE64 }}
61+
MAC_APP_CERTIFICATE_BASE64: ${{ secrets.MAC_APP_CERTIFICATE_BASE64 }}
62+
63+
MAC_INSTALLER_CERTIFICATE_PATH: ${{ runner.temp }}/mac_installer_certificate.cer
64+
MAC_DEVELOPMENT_CERTIFICATE_PATH: ${{ runner.temp }}/mac_development_certificate.cer
65+
MAC_APP_CERTIFICATE_PATH: ${{ runner.temp }}/mac_app_certificate.cer
66+
4167
KEYCHAIN_PATH: ${{ runner.temp }}/app-signing.keychain-db
4268
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
4369
run: |
@@ -54,7 +80,7 @@ jobs:
5480
security import $MAC_APP_CERTIFICATE_PATH -A -t cert -k $KEYCHAIN_PATH
5581
security list-keychain -d user -s $KEYCHAIN_PATH
5682
57-
- name: Install Apple Code Signing Certificate
83+
- name: Install Apple API key
5884
env:
5985
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
6086
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
@@ -78,31 +104,39 @@ jobs:
78104
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
79105
run: npm run package:mac:publish
80106

81-
- name: Set version from tag (without pre-release)
82-
env:
83-
GITHUB_REF: ${{ github.ref }}
84-
run: |
85-
VERSION=$(echo "${GITHUB_REF#refs/tags/v}" | sed 's/-.*//')
86-
npm version "$VERSION" --no-git-tag-version --allow-same-version
107+
- name: Set version from tag or input (without pre-release)
108+
run: npm version "$VERSION_WITHOUT_PRERELEASE" --no-git-tag-version --allow-same-version
87109

88110
- name: Package (Mac App Store)
89111
env:
90112
GITHUB_RUN_NUMBER: ${{ github.run_number }}
91-
run: npm run package:mac:store
113+
run: |
114+
echo "Packaging for Mac App Store..."
115+
npm run package:mac:store
92116
93-
- name: Publish to App Store Connect
117+
- name: Submit to App Store Connect
94118
continue-on-error: true
95119
env:
96120
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
97121
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
98-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99122
run: |
123+
echo "Submitting to App Store Connect..."
124+
125+
PKG_FILE=$(find dist -name "*.pkg" -type f | head -1)
126+
if [[ -z "$PKG_FILE" ]]; then
127+
echo "Error: No .pkg file found in dist directory"
128+
exit 1
129+
fi
130+
131+
echo "Found package: $PKG_FILE"
132+
100133
xcrun altool \
101-
--notarize-app \
102-
--file path/to/your/package.pkg \
134+
--upload-app \
135+
--file "$PKG_FILE" \
103136
--apiKey "$APPLE_API_KEY_ID" \
104137
--apiIssuer "$APPLE_API_ISSUER" \
105-
--output-format xml
138+
--output-format xml \
139+
--verbose
106140
107141
- name: Upload artifacts
108142
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)