@@ -2,37 +2,117 @@ name: 'Build for Mac'
22description : ' Build for Mac'
33inputs :
44 production-release :
5- description : ' Production release? '
5+ description : ' Whether this is a production release'
66 required : true
77 release-version :
88 description : ' The release version'
9+ required : true
10+ release-tag :
11+ description : ' The release tag'
12+ required : true
13+ crabnebula-release-id :
14+ description : ' The CrabNebula release ID'
15+ required : true
16+ apple-certificate :
17+ description : ' The Apple certificate'
18+ required : true
19+ apple-certificate-password :
20+ description : ' The Apple certificate password'
21+ required : true
22+ keychain-password :
23+ description : ' The keychain password'
24+ required : true
25+ apple-id :
26+ description : ' The Apple ID'
27+ required : true
28+ apple-password :
29+ description : ' The Apple password'
30+ required : true
31+ apple-team-id :
32+ description : ' The Apple team ID'
33+ required : true
34+ tauri-signing-private-key :
35+ description : ' The Tauri signing private key'
36+ required : true
37+ tauri-signing-private-key-password :
38+ description : ' The Tauri signing private key password'
39+ required : true
40+ tauri-signing-public-key :
41+ description : ' The Tauri signing public key'
42+ required : true
43+ crabnebula-org-name :
44+ description : ' The CrabNebula org name'
45+ required : true
46+ crabnebula-app-name :
47+ description : ' The CrabNebula app name'
48+ required : true
49+ crabnebula-api-key :
50+ description : ' The CrabNebula API key'
51+ required : true
952
1053runs :
1154 using : ' composite'
1255 steps :
13- # TODO: set up signing certs here when releasing to production
14-
15- - name : Get artifact name
16- id : set-env
56+ - name : Import Apple Developer Certificate
57+ env :
58+ APPLE_CERTIFICATE : ${{ inputs.apple-certificate }}
59+ APPLE_CERTIFICATE_PASSWORD : ${{ inputs.apple-certificate-password }}
60+ KEYCHAIN_PASSWORD : ${{ inputs.keychain-password }}
61+ shell : bash
1762 run : |
18- echo "artifact_name=algokit-lora-mac-${{ runner.arch }}" >> $GITHUB_OUTPUT
63+ echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
64+ security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
65+ security default-keychain -s build.keychain
66+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
67+ security set-keychain-settings -t 3600 -u build.keychain
68+ security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
69+ security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
70+ security find-identity -v -p codesigning build.keychain
71+
72+ - name : Verify Certificate
1973 shell : bash
74+ run : |
75+ CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Developer ID Application")
76+ CERT_ID=$(echo "$CERT_INFO" | awk -F'"' '{print $2}')
77+ echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV
78+ echo "Certificate imported."
2079
21- - name : Bump version in tauri.conf.json
80+ - name : Setup tauri.conf.json
2281 if : ${{ inputs.release-version != '' }}
2382 run : |
24- sed -i '' "s/\"version\": \"0.0.0\"/\"version\": \"${{ inputs.release-version }}\"/g" "src-tauri/tauri.conf.json"
83+ sed -i '' "s/\"version\": \"0.1.0\"/\"version\": \"${{ inputs.release-version }}\"/g" "src-tauri/tauri.conf.json"
84+ sed -i '' "s/\"createUpdaterArtifacts\": false/\"createUpdaterArtifacts\": true/g" "src-tauri/tauri.conf.json"
85+ sed -i '' "s/CN_ORG_NAME/${{ inputs.crabnebula-org-name }}/g" "src-tauri/tauri.conf.json"
86+ sed -i '' "s/CN_APP_NAME/${{ inputs.crabnebula-app-name }}/g" "src-tauri/tauri.conf.json"
87+ sed -i '' "s/CN_CHANNEL/${{ inputs.production-release != 'true' && '?channel=beta' || '' }}/g" "src-tauri/tauri.conf.json"
88+ sed -i '' "s/TAURI_SIGNING_PUBLIC_KEY/${{ inputs.tauri-signing-public-key }}/g" "src-tauri/tauri.conf.json"
2589 shell : bash
2690
2791 - name : Build tauri app
2892 run : |
2993 npm run tauri build
3094 shell : bash
95+ env :
96+ APPLE_CERTIFICATE : ${{ inputs.apple-certificate }}
97+ APPLE_CERTIFICATE_PASSWORD : ${{ inputs.apple-certificate-password }}
98+ APPLE_SIGNING_IDENTITY : ${{ env.CERT_ID }}
99+ APPLE_ID : ${{ inputs.apple-id }}
100+ APPLE_PASSWORD : ${{ inputs.apple-password }}
101+ APPLE_TEAM_ID : ${{ inputs.apple-team-id }}
102+ TAURI_SIGNING_PRIVATE_KEY : ${{ inputs.tauri-signing-private-key }}
103+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ${{ inputs.tauri-signing-private-key-password }}
104+
105+ - name : Upload artifacts to release
106+ uses : softprops/action-gh-release@v1
107+ with :
108+ fail_on_unmatched_files : true
109+ files : |
110+ src-tauri/target/release/bundle/dmg/algokit-lora_*.dmg
111+ tag_name : ${{ inputs.release-tag }}
112+ prerelease : ${{ inputs.production-release != 'true' }}
31113
32- - name : Upload binary as artifact
33- id : upload-artifact
34- uses : actions/upload-artifact@v4
114+ - name : Upload artifacts to CrabNebula
115+ uses :
crabnebula-dev/[email protected] 35116 with :
36- if-no-files-found : error
37- name : ${{ steps.set-env.outputs.artifact_name }}
38- path : src-tauri/target/release/bundle/dmg/algokit-lora_*.dmg
117+ command : release upload "${{ inputs.crabnebula-org-name }}/${{ inputs.crabnebula-app-name }}" --framework tauri ${{ inputs.production-release != 'true' && '--channel beta' || '' }}
118+ api-key : ${{ inputs.crabnebula-api-key }}
0 commit comments