@@ -13,20 +13,18 @@ jobs:
13
13
with :
14
14
token : ${{ secrets.GH_TOKEN }}
15
15
16
- - name : Cache/restore Wolfram Engine install
17
- id : cache-restore
18
- uses : actions/cache@v2
19
- with :
20
- path : ${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}
21
- key : wolframengine-${{ env.WOLFRAM_SYSTEM_ID }}-${{ env.WOLFRAMENGINE_CACHE_KEY }}
22
16
23
- - name : Install Wolfram Engine
24
- if : steps.cache-restore.outputs.cache-hit != 'true'
17
+
18
+ - name : Install Python 3.11
25
19
run : |
26
- echo 'Installing Wolfram Engine...'
27
- brew install --cask wolfram-engine
28
- brew install libuv
29
- echo 'Installed Wolfram Engine.'
20
+
21
+ echo "/opt/homebrew/opt/[email protected] /bin" >> $GITHUB_PATH
22
+ echo "PYTHON=/opt/homebrew/opt/[email protected] /bin/python3.11" >> $GITHUB_ENV
23
+
24
+ - name : Check Python version
25
+ run : |
26
+ python3.11 -V
27
+ which python3.11
30
28
31
29
- name : Set up Node.js
32
30
uses : actions/setup-node@v4
39
37
node -v
40
38
npm -v
41
39
42
- - name : Install dependencies
43
- run : /
44
- npm i
40
+ - name : Create Python virtual environment
41
+ run : |
42
+ python3.11 -m venv venv
43
+ source venv/bin/activate
44
+ pip install --upgrade pip setuptools wheel
45
+
46
+ - name : Install Node.js dependencies
47
+ run : |
48
+ source venv/bin/activate
49
+ npm install
50
+
51
+ - name : Install the Apple certificate and provisioning profile
52
+ env :
53
+ BUILD_CERTIFICATE_BASE64 : ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
54
+ BUILD_CERTIFICATE_PASSWORD : ${{ secrets.BUILD_CERTIFICATE_PASSWORD }}
55
+ BUILD_PROVISION_PROFILE_BASE64 : ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
56
+ KEYCHAIN_PASSWORD : ${{ secrets.KEYCHAIN_PASSWORD }}
57
+ APPLE_ID : ${{ secrets.APPLE_ID }}
58
+ APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
59
+ APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
60
+ APPLE_ID_PASSWORD : ${{ secrets.APPLE_ID_PASSWORD }}
61
+ GH_TOKEN : ${{ secrets.GH_TOKEN }}
62
+ run : |
63
+ # Create variables
64
+ CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
65
+ PP_PATH=$RUNNER_TEMP/build_pp.provisionprofile
66
+ KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
67
+
68
+ # Import certificate and provisioning profile from secrets
69
+ echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
70
+
71
+ # Create temporary keychain
72
+ security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
73
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
74
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
75
+
76
+ # Import certificate to keychain
77
+ security import $CERTIFICATE_PATH -P "$BUILD_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
78
+ security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
79
+ security list-keychain -d user -s $KEYCHAIN_PATH
80
+
81
+ - name : Cache/restore Wolfram Engine install
82
+ id : cache-restore
83
+ uses : actions/cache@v4
84
+ with :
85
+ path : ${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}
86
+ key : wolframengine-${{ env.WOLFRAM_SYSTEM_ID }}-${{ env.WOLFRAMENGINE_CACHE_KEY }}
87
+
88
+ - name : Install Wolfram Engine
89
+ if : steps.cache-restore.outputs.cache-hit != 'true'
90
+ run : |
91
+ echo 'Installing Wolfram Engine...'
92
+ brew install --cask wolfram-engine
93
+ brew install libuv
94
+ echo 'Installed Wolfram Engine.'
45
95
46
96
- name : Prepare bundle
47
97
env :
@@ -54,9 +104,19 @@ jobs:
54
104
55
105
56
106
- name : Build electron
107
+ env :
108
+ APPLE_ID : ${{ secrets.APPLE_ID }}
109
+ APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
110
+ APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
111
+ APPLE_ID_PASSWORD : ${{ secrets.APPLE_ID_PASSWORD }}
112
+ GH_TOKEN : ${{ secrets.GH_TOKEN }}
57
113
run : |
58
114
npm run dist-mac
59
115
116
+ - name : Clean up keychain and provisioning profile
117
+ run : |
118
+ security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
119
+
60
120
61
121
build-MacOSX-x64 :
62
122
runs-on : macos-13
@@ -70,9 +130,68 @@ jobs:
70
130
with :
71
131
token : ${{ secrets.GH_TOKEN }}
72
132
133
+ - name : Install Python 3.11 (for node-gyp)
134
+ run : |
135
+ brew install [email protected] || true
136
+ /usr/local/opt/[email protected] /bin/python3.11 -m ensurepip
137
+ /usr/local/opt/[email protected] /bin/python3.11 -m pip install setuptools
138
+ echo "/usr/local/opt/[email protected] /bin" >> $GITHUB_PATH
139
+ echo "PYTHON=/usr/local/opt/[email protected] /bin/python3.11" >> $GITHUB_ENV
140
+
141
+ - name : Check Python version
142
+ run : |
143
+ python3.11 -V
144
+ which python3.11
145
+
146
+ - name : Set up Node.js
147
+ uses : actions/setup-node@v4
148
+ with :
149
+ node-version : ' 20.19.0'
150
+ architecture : ' x64'
151
+
152
+ - name : Verify Node.js
153
+ run : |
154
+ node -v
155
+ npm -v
156
+
157
+ - name : Install Node.js dependencies
158
+ run : |
159
+ npm install
160
+
161
+ - name : Install the Apple certificate and provisioning profile
162
+ env :
163
+ BUILD_CERTIFICATE_BASE64 : ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
164
+ BUILD_CERTIFICATE_PASSWORD : ${{ secrets.BUILD_CERTIFICATE_PASSWORD }}
165
+ BUILD_PROVISION_PROFILE_BASE64 : ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
166
+ KEYCHAIN_PASSWORD : ${{ secrets.KEYCHAIN_PASSWORD }}
167
+ APPLE_ID : ${{ secrets.APPLE_ID }}
168
+ APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
169
+ APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
170
+ APPLE_ID_PASSWORD : ${{ secrets.APPLE_ID_PASSWORD }}
171
+ GH_TOKEN : ${{ secrets.GH_TOKEN }}
172
+ run : |
173
+ # Create variables
174
+ CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
175
+ PP_PATH=$RUNNER_TEMP/build_pp.provisionprofile
176
+ KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
177
+
178
+ # Import certificate and provisioning profile from secrets
179
+ echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
180
+
181
+ # Create temporary keychain
182
+ security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
183
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
184
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
185
+
186
+ # Import certificate to keychain
187
+ security import $CERTIFICATE_PATH -P "$BUILD_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
188
+ security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
189
+ security list-keychain -d user -s $KEYCHAIN_PATH
190
+
191
+
73
192
- name : Cache/restore Wolfram Engine install
74
193
id : cache-restore
75
- uses : actions/cache@v2
194
+ uses : actions/cache@v4
76
195
with :
77
196
path : ${{ env.WOLFRAMENGINE_INSTALLATION_DIRECTORY }}
78
197
key : wolframengine-${{ env.WOLFRAM_SYSTEM_ID }}-${{ env.WOLFRAMENGINE_CACHE_KEY }}
@@ -85,20 +204,7 @@ jobs:
85
204
brew install libuv
86
205
echo 'Installed Wolfram Engine.'
87
206
88
- - name : Set up Node.js
89
- uses : actions/setup-node@v4
90
- with :
91
- node-version : ' 23' # or '25', etc.
92
- architecture : ' x86'
93
-
94
- - name : Verify Node.js
95
- run : |
96
- node -v
97
- npm -v
98
207
99
- - name : Install dependencies
100
- run : /
101
- npm i
102
208
103
209
- name : Bundle files
104
210
env :
@@ -110,5 +216,15 @@ jobs:
110
216
npm run pre-dist
111
217
112
218
- name : Build electron
219
+ env :
220
+ APPLE_ID : ${{ secrets.APPLE_ID }}
221
+ APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
222
+ APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
223
+ APPLE_ID_PASSWORD : ${{ secrets.APPLE_ID_PASSWORD }}
224
+ GH_TOKEN : ${{ secrets.GH_TOKEN }}
225
+ run : |
226
+ npm run dist-mac86
227
+
228
+ - name : Clean up keychain and provisioning profile
113
229
run : |
114
- npm run dist-mac86
230
+ security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
0 commit comments