aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ferdi-builds.yml212
1 files changed, 183 insertions, 29 deletions
diff --git a/.github/workflows/ferdi-builds.yml b/.github/workflows/ferdi-builds.yml
index 74defe01e..bf6b6140f 100644
--- a/.github/workflows/ferdi-builds.yml
+++ b/.github/workflows/ferdi-builds.yml
@@ -31,7 +31,7 @@ env:
31 # DEBUG: electron-builder 31 # DEBUG: electron-builder
32 32
33jobs: 33jobs:
34 check_date: 34 check_updates:
35 runs-on: ubuntu-latest 35 runs-on: ubuntu-latest
36 name: Check latest commit 36 name: Check latest commit
37 outputs: 37 outputs:
@@ -89,35 +89,19 @@ jobs:
89 git push origin nightly --no-verify 89 git push origin nightly --no-verify
90 fi 90 fi
91 91
92 build: 92 build_mac:
93 name: '${{ matrix.os }}' 93 name: 'macos ${{ github.event.inputs.message }}'
94 needs: check_date 94 needs: check_updates
95 if: ${{ needs.check_date.outputs.should_run != 'false' }} 95 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || contains(github.event.inputs.message, 'macOS')) }}
96 runs-on: ${{ matrix.os }} 96 runs-on: macos-10.15
97 strategy:
98 matrix:
99 os: [macos-10.15, ubuntu-20.04, windows-2019]
100 node-version: [14.16.1]
101 fail-fast: false
102 steps: 97 steps:
103 - name: Set env vars for macOS and Linux 98 - name: Set env vars
104 if: startsWith(runner.os, 'macOS') || startsWith(runner.os, 'Linux')
105 run: | 99 run: |
106 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 100 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
107 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV 101 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
108 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV 102 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
109 echo "FORCE_REBUILD_ON_NIGHTLY=${{ contains(github.event.inputs.message, 'force build') && contains(github.event.inputs.message, 'nightly branch') }}" >> $GITHUB_ENV 103 echo "FORCE_REBUILD_ON_NIGHTLY=${{ contains(github.event.inputs.message, 'force build') && contains(github.event.inputs.message, 'nightly branch') }}" >> $GITHUB_ENV
110 echo "SKIP_NOTARIZATION=${{ !contains(github.repository_owner, 'getferdi') }}" >> $GITHUB_ENV 104 echo "SKIP_NOTARIZATION=${{ !contains(github.repository_owner, 'getferdi') }}" >> $GITHUB_ENV
111 - name: Set env vars for Windows
112 if: startsWith(runner.os, 'Windows')
113 run: |
114 echo "HOME=$USERPROFILE" >> $GITHUB_ENV
115 echo "NPM_CACHE=$USERPROFILE\.npm" >> $GITHUB_ENV
116 echo "ELECTRON_CACHE=$USERPROFILE\.cache\electron" >> $GITHUB_ENV
117 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE\.cache\electron-builder" >> $GITHUB_ENV
118 echo "FORCE_REBUILD_ON_NIGHTLY=${{ contains(github.event.inputs.message, 'force build') && contains(github.event.inputs.message, 'nightly branch') }}" >> $GITHUB_ENV
119 echo "SKIP_NOTARIZATION=${{ !contains(github.repository_owner, 'getferdi') }}" >> $GITHUB_ENV
120 shell: bash
121 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch 105 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
122 uses: actions/checkout@v2 106 uses: actions/checkout@v2
123 if: ${{ github.event_name == 'schedule' || env.FORCE_REBUILD_ON_NIGHTLY == 'true' }} 107 if: ${{ github.event_name == 'schedule' || env.FORCE_REBUILD_ON_NIGHTLY == 'true' }}
@@ -157,17 +141,15 @@ jobs:
157 with: 141 with:
158 key: ${{ runner.os }}-${{ env.cache-name }} 142 key: ${{ runner.os }}-${{ env.cache-name }}
159 path: ${{ env.ELECTRON_BUILDER_CACHE }} 143 path: ${{ env.ELECTRON_BUILDER_CACHE }}
160 - name: Use Node.js ${{ matrix.node-version }} 144 - name: Use Node.js 14.16.1
161 uses: actions/setup-node@v2 145 uses: actions/setup-node@v2
162 with: 146 with:
163 node-version: ${{ matrix.node-version }} 147 node-version: 14.16.1
164 - name: Upgrade Xcode version on the macOS 10.15 default runners provided by GH Actions 148 - name: Upgrade Xcode version on the macOS 10.15 default runners provided by GH Actions
165 if: startsWith(runner.os, 'macOS')
166 run: | 149 run: |
167 sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/* 150 sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
168 sudo xcode-select -s "/Applications/Xcode_12.4.app" 151 sudo xcode-select -s "/Applications/Xcode_12.4.app"
169 - name: Uninstall locally and reinstall node-gyp globally 152 - name: Uninstall locally and reinstall node-gyp globally
170 if: startsWith(runner.os, 'macOS') || startsWith(runner.os, 'Linux')
171 run: | 153 run: |
172 npm uninstall node-gyp 154 npm uninstall node-gyp
173 npm i -g node-gyp@8.0.0 && npm config set node_gyp "$(which node-gyp)" 155 npm i -g node-gyp@8.0.0 && npm config set node_gyp "$(which node-gyp)"
@@ -194,8 +176,6 @@ jobs:
194 # APPLEID_PASSWORD: ${{ secrets.APPLEID_PASSWORD }} 176 # APPLEID_PASSWORD: ${{ secrets.APPLEID_PASSWORD }}
195 # CSC_LINK: ${{ secrets.CSC_LINK }} 177 # CSC_LINK: ${{ secrets.CSC_LINK }}
196 # CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} 178 # CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
197 # WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
198 # WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
199 - name: Build Ferdi with publish for 'release' branch 179 - name: Build Ferdi with publish for 'release' branch
200 if: ${{ env.GIT_BRANCH_NAME == 'release' }} 180 if: ${{ env.GIT_BRANCH_NAME == 'release' }}
201 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=ferdi 181 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=ferdi
@@ -208,5 +188,179 @@ jobs:
208 # APPLEID_PASSWORD: ${{ secrets.APPLEID_PASSWORD }} 188 # APPLEID_PASSWORD: ${{ secrets.APPLEID_PASSWORD }}
209 # CSC_LINK: ${{ secrets.CSC_LINK }} 189 # CSC_LINK: ${{ secrets.CSC_LINK }}
210 # CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} 190 # CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
191
192 build_linux:
193 name: 'ubuntu ${{ github.event.inputs.message }}'
194 needs: check_updates
195 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || contains(github.event.inputs.message, 'Linux')) }}
196 runs-on: ubuntu-20.04
197 steps:
198 - name: Set env vars
199 run: |
200 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
201 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
202 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
203 echo "FORCE_REBUILD_ON_NIGHTLY=${{ contains(github.event.inputs.message, 'force build') && contains(github.event.inputs.message, 'nightly branch') }}" >> $GITHUB_ENV
204 echo "SKIP_NOTARIZATION=${{ !contains(github.repository_owner, 'getferdi') }}" >> $GITHUB_ENV
205 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
206 uses: actions/checkout@v2
207 if: ${{ github.event_name == 'schedule' || env.FORCE_REBUILD_ON_NIGHTLY == 'true' }}
208 with:
209 submodules: recursive
210 ref: nightly
211 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch
212 uses: actions/checkout@v2
213 if: ${{ github.event_name != 'schedule' && env.FORCE_REBUILD_ON_NIGHTLY != 'true' }}
214 with:
215 submodules: recursive
216 - name: Extract Git branch name from the currently checked out branch (not from the branch where this run was kicked off)
217 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
218 shell: bash
219 - name: Cache node modules
220 uses: actions/cache@v2
221 env:
222 cache-name: cache-node-modules
223 with:
224 path: ${{ env.NPM_CACHE }}
225 key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
226 restore-keys: |
227 ${{ runner.os }}-build-${{ env.cache-name }}-
228 ${{ runner.os }}-build-
229 ${{ runner.os }}-
230 - name: Cache electron modules
231 uses: actions/cache@v2
232 env:
233 cache-name: cache-electron-modules
234 with:
235 key: ${{ runner.os }}-${{ env.cache-name }}
236 path: ${{ env.ELECTRON_CACHE }}
237 - name: Cache electron-builder modules
238 uses: actions/cache@v2
239 env:
240 cache-name: cache-electron-builder-modules
241 with:
242 key: ${{ runner.os }}-${{ env.cache-name }}
243 path: ${{ env.ELECTRON_BUILDER_CACHE }}
244 - name: Use Node.js 14.16.1
245 uses: actions/setup-node@v2
246 with:
247 node-version: 14.16.1
248 - name: Uninstall locally and reinstall node-gyp globally
249 run: |
250 npm uninstall node-gyp
251 npm i -g node-gyp@8.0.0 && npm config set node_gyp "$(which node-gyp)"
252 - name: Install node dependencies recursively
253 run: npx lerna bootstrap
254 - name: Package recipes
255 run: npm i && npm run package
256 working-directory: ./recipes
257 - name: Run linter and tests
258 run: npm run lint && npm run test
259 - name: Build Ferdi without publish for any branch not 'nightly' and not 'release'
260 if: ${{ env.GIT_BRANCH_NAME != 'nightly' && env.GIT_BRANCH_NAME != 'release' }}
261 run: npm run build -- --publish never
262 shell: bash
263 - name: Build Ferdi with publish for 'nightly' branch
264 if: ${{ env.GIT_BRANCH_NAME == 'nightly' }}
265 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=nightlies
266 shell: bash
267 env:
268 GH_TOKEN: ${{ secrets.FERDI_PUBLISH_TOKEN }}
269 CSC_IDENTITY_AUTO_DISCOVERY: false
270 - name: Build Ferdi with publish for 'release' branch
271 if: ${{ env.GIT_BRANCH_NAME == 'release' }}
272 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=ferdi
273 shell: bash
274 env:
275 GH_TOKEN: ${{ secrets.FERDI_PUBLISH_TOKEN }}
276 CSC_IDENTITY_AUTO_DISCOVERY: false
277
278 build_windows:
279 name: 'windows ${{ github.event.inputs.message }}'
280 needs: check_updates
281 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || contains(github.event.inputs.message, 'Windows')) }}
282 runs-on: windows-2019
283 steps:
284 - name: Set env vars
285 run: |
286 echo "HOME=$USERPROFILE" >> $GITHUB_ENV
287 echo "NPM_CACHE=$USERPROFILE\.npm" >> $GITHUB_ENV
288 echo "ELECTRON_CACHE=$USERPROFILE\.cache\electron" >> $GITHUB_ENV
289 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE\.cache\electron-builder" >> $GITHUB_ENV
290 echo "FORCE_REBUILD_ON_NIGHTLY=${{ contains(github.event.inputs.message, 'force build') && contains(github.event.inputs.message, 'nightly branch') }}" >> $GITHUB_ENV
291 echo "SKIP_NOTARIZATION=${{ !contains(github.repository_owner, 'getferdi') }}" >> $GITHUB_ENV
292 shell: bash
293 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
294 uses: actions/checkout@v2
295 if: ${{ github.event_name == 'schedule' || env.FORCE_REBUILD_ON_NIGHTLY == 'true' }}
296 with:
297 submodules: recursive
298 ref: nightly
299 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch
300 uses: actions/checkout@v2
301 if: ${{ github.event_name != 'schedule' && env.FORCE_REBUILD_ON_NIGHTLY != 'true' }}
302 with:
303 submodules: recursive
304 - name: Extract Git branch name from the currently checked out branch (not from the branch where this run was kicked off)
305 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
306 shell: bash
307 - name: Cache node modules
308 uses: actions/cache@v2
309 env:
310 cache-name: cache-node-modules
311 with:
312 path: ${{ env.NPM_CACHE }}
313 key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
314 restore-keys: |
315 ${{ runner.os }}-build-${{ env.cache-name }}-
316 ${{ runner.os }}-build-
317 ${{ runner.os }}-
318 - name: Cache electron modules
319 uses: actions/cache@v2
320 env:
321 cache-name: cache-electron-modules
322 with:
323 key: ${{ runner.os }}-${{ env.cache-name }}
324 path: ${{ env.ELECTRON_CACHE }}
325 - name: Cache electron-builder modules
326 uses: actions/cache@v2
327 env:
328 cache-name: cache-electron-builder-modules
329 with:
330 key: ${{ runner.os }}-${{ env.cache-name }}
331 path: ${{ env.ELECTRON_BUILDER_CACHE }}
332 - name: Use Node.js 14.16.1
333 uses: actions/setup-node@v2
334 with:
335 node-version: 14.16.1
336 - name: Install node dependencies recursively
337 run: npx lerna bootstrap
338 - name: Package recipes
339 run: npm i && npm run package
340 working-directory: ./recipes
341 - name: Run linter and tests
342 run: npm run lint && npm run test
343 - name: Build Ferdi without publish for any branch not 'nightly' and not 'release'
344 if: ${{ env.GIT_BRANCH_NAME != 'nightly' && env.GIT_BRANCH_NAME != 'release' }}
345 run: npm run build -- --publish never
346 shell: bash
347 - name: Build Ferdi with publish for 'nightly' branch
348 if: ${{ env.GIT_BRANCH_NAME == 'nightly' }}
349 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=nightlies
350 shell: bash
351 env:
352 GH_TOKEN: ${{ secrets.FERDI_PUBLISH_TOKEN }}
353 CSC_IDENTITY_AUTO_DISCOVERY: false
354 # TODO: Commented out the code signing process for now (so as to at least get unsigned nightlies available for testing)
355 # WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
356 # WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
357 - name: Build Ferdi with publish for 'release' branch
358 if: ${{ env.GIT_BRANCH_NAME == 'release' }}
359 run: npm run build -- --publish always -c.publish.provider=github -c.publish.owner=${{ github.repository_owner }} -c.publish.repo=ferdi
360 shell: bash
361 env:
362 GH_TOKEN: ${{ secrets.FERDI_PUBLISH_TOKEN }}
363 CSC_IDENTITY_AUTO_DISCOVERY: false
364 # TODO: Commented out the code signing process for now (so as to at least get unsigned nightlies available for testing)
211 # WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }} 365 # WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
212 # WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }} 366 # WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}