Skip to content

Commit 1555626

Browse files
authored
fix: macos builds (#17)
2 parents 966e394 + f5f5fc8 commit 1555626

File tree

5 files changed

+46
-22
lines changed

5 files changed

+46
-22
lines changed

.github/workflows/deploy.yml

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@ name: 'deploy'
22

33
on:
44
workflow_dispatch:
5-
push:
6-
branches:
7-
- feat/macos-deployment
85

96
jobs:
107
deploy-macos-app:
118
runs-on: macos-latest
129
env:
13-
VITE_MOCK_DATA: false
14-
VITE_FREECODECAMP_API: https://test-api.freecodecamp.dev
10+
VITE_MOCK_DATA: ${{ vars.VITE_MOCK_DATA }}
11+
VITE_FREECODECAMP_API: ${{ vars.VITE_FREECODECAMP_API }}
1512
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
1613
steps:
1714
- uses: actions/checkout@v4
@@ -29,6 +26,9 @@ jobs:
2926
- name: install Rust stable
3027
uses: dtolnay/rust-toolchain@stable
3128

29+
- name: Install Rust targets
30+
run: rustup target add aarch64-apple-darwin x86_64-apple-darwin
31+
3232
- name: install codemagic cli tools
3333
run: pip3 install codemagic-cli-tools --break-system-packages
3434

@@ -37,7 +37,7 @@ jobs:
3737
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
3838
APPLE_DISTRIBUTION_CERT: ${{ secrets.APPLE_DISTRIBUTION_CERT }}
3939
MAC_INSTALLER_DISTRIBUTION_CERT: ${{ secrets.MAC_INSTALLER_DISTRIBUTION_CERT }}
40-
PROVISIONING_PROFILE: ${{ secrets.PROVISIONING_PROFILE }}
40+
MAC_APP_STORE_PROVISIONING_PROFILE: ${{ secrets.MAC_APP_STORE_PROVISIONING_PROFILE }}
4141
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
4242
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
4343
run: |
@@ -54,32 +54,46 @@ jobs:
5454
# import certificate and provisioning profile from secrets
5555
echo -n "$APPLE_DISTRIBUTION_CERT" | base64 --decode -o $DISTRIBUTION_CERT_PATH
5656
echo -n "$MAC_INSTALLER_DISTRIBUTION_CERT" | base64 --decode -o $MAC_INSTALLER_DISTRIBUTION_CERT_PATH
57-
echo -n "$PROVISIONING_PROFILE" | base64 --decode -o $PP_PATH
57+
echo -n "$MAC_APP_STORE_PROVISIONING_PROFILE" | base64 --decode -o $PP_PATH
5858
echo -n "$APPLE_API_KEY" | base64 --decode -o $APPLE_API_KEY_PATH
5959
6060
# create temporary keychain
6161
keychain initialize --password $KEYCHAIN_PASSWORD --path $KEYCHAIN_PATH --timeout 21600
6262
6363
# import certificate to keychain
64-
keychain add-certificates
65-
security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
64+
keychain add-certificates -A
65+
security set-key-partition-list -S apple-tool:,apple:, -s -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
6666
security find-identity -v
6767
6868
- name: install frontend dependencies
6969
run: pnpm install && pnpm run prisma-generate
7070

71+
# The rust build requires the `.env` file to exist, even if none of the variables are used
72+
- name: prep env
73+
run: cp sample.env .env
74+
7175
- uses: tauri-apps/tauri-action@v0
7276
env:
7377
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
7478
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
79+
APPLE_SIGNING_IDENTITY: 'Apple Distribution: Free Code Camp, Inc. (L33K9LWVP9)'
80+
81+
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
82+
VITE_FREECODECAMP_API: ${{ vars.VITE_FREECODECAMP_API }}
83+
VITE_MOCK_DATA: ${{ vars.VITE_MOCK_DATA }}
7584
with:
76-
args: "--target universal-apple-darwin"
77-
# includeUpdaterJson: true
85+
args: '--target universal-apple-darwin --verbose'
86+
includeDebug: false
87+
includeRelease: true
88+
includeUpdaterJson: true
7889

79-
- name: generate and upload installer package
90+
- name: generate installer package
91+
run: |
92+
xcrun productbuild --sign "3rd Party Mac Developer Installer: Free Code Camp, Inc. (L33K9LWVP9)" --component "./src-tauri/target/universal-apple-darwin/release/bundle/macos/Exam Environment.app" /Applications "Exam Environment.pkg"
93+
94+
- name: upload installer package
8095
env:
8196
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
8297
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
8398
run: |
84-
xcrun productbuild --sign "3rd Party Mac Developer Installer: Free Code Camp, Inc. (L33K9LWVP9)" --component "./src-tauri/target/universal-apple-darwin/release/bundle/macos/Exam Environment.app" /Applications "Exam Environment.pkg"
8599
xcrun altool --upload-app --type macos --file "Exam Environment.pkg" --apiKey $APPLE_API_KEY_ID --apiIssuer $APPLE_API_ISSUER

.github/workflows/publish.yml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ jobs:
4747
matrix:
4848
include:
4949
- platform: "macos-latest"
50-
args: "--target aarch64-apple-darwin"
50+
args: "--target aarch64-apple-darwin --bundles dmg"
5151
- platform: "macos-latest"
52-
args: "--target x86_64-apple-darwin"
52+
args: "--target x86_64-apple-darwin --bundles dmg"
5353
- platform: "ubuntu-22.04"
5454
args: ""
5555
- platform: "windows-latest"
@@ -118,19 +118,24 @@ jobs:
118118
if: matrix.platform == 'macos-latest'
119119
env:
120120
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
121-
APPLE_DISTRIBUTION_CERT: ${{ secrets.APPLE_DISTRIBUTION_CERT }}
122-
PROVISIONING_PROFILE: ${{ secrets.PROVISIONING_PROFILE }}
121+
APPLE_DEVELOPER_ID_CERT: ${{ secrets.APPLE_DEVELOPER_ID_CERT }}
122+
PROVISIONING_PROFILE: ${{ secrets.MAC_APP_DIRECT_PROVISIONING_PROFILE }}
123+
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
124+
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
123125
run: |
124126
# create variables
127+
mkdir -p ~/.appstoreconnect/private_keys
125128
CERT_BASE_PATH=/Users/runner/Library/MobileDevice/Certificates
126129
mkdir -p $CERT_BASE_PATH
127-
DISTRIBUTION_CERT_PATH=$CERT_BASE_PATH/distribution_certificate.p12
130+
DEVELOPER_ID_CERT_PATH=$CERT_BASE_PATH/developer_id_certificate.p12
128131
PP_PATH=./src-tauri/embedded.provisionprofile
129132
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
133+
APPLE_API_KEY_PATH=~/.appstoreconnect/private_keys/AuthKey_$APPLE_API_KEY_ID.p8
130134
131135
# import certificate and provisioning profile from secrets
132-
echo -n "$APPLE_DISTRIBUTION_CERT" | base64 --decode -o $DISTRIBUTION_CERT_PATH
136+
echo -n "$APPLE_DEVELOPER_ID_CERT" | base64 --decode -o $DEVELOPER_ID_CERT_PATH
133137
echo -n "$PROVISIONING_PROFILE" | base64 --decode -o $PP_PATH
138+
echo -n "$APPLE_API_KEY" | base64 --decode -o $APPLE_API_KEY_PATH
134139
135140
# create temporary keychain
136141
keychain initialize --password $KEYCHAIN_PASSWORD --path $KEYCHAIN_PATH --timeout 21600
@@ -150,6 +155,11 @@ jobs:
150155
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
151156
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
152157

158+
# MacOS specific
159+
APPLE_SIGNING_IDENTITY: "Developer ID Application: Free Code Camp, Inc. (L33K9LWVP9)"
160+
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
161+
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY_ID }}
162+
153163
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
154164
VITE_FREECODECAMP_API: ${{ env.VITE_FREECODECAMP_API }}
155165
VITE_MOCK_DATA: ${{ env.VITE_MOCK_DATA }}
File renamed without changes.
File renamed without changes.

src-tauri/tauri.conf.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@
3434
"icons/icon.ico"
3535
],
3636
"macOS": {
37-
"entitlements": "Release.entitlements",
37+
"entitlements": "./Entitlements.plist",
3838
"exceptionDomain": "",
3939
"frameworks": [],
40-
"signingIdentity": "Apple Distribution: Free Code Camp, Inc. (L33K9LWVP9)",
40+
"signingIdentity": "Developer ID Application: Free Code Camp, Inc. (L33K9LWVP9)",
4141
"files": {
42-
"embedded.provisionprofile": "embedded.provisionprofile"
42+
"embedded.provisionprofile": "./embedded.provisionprofile"
4343
}
4444
},
4545
"publisher": "Free Code Camp, Inc.",

0 commit comments

Comments
 (0)