Skip to content

Commit ff055d0

Browse files
committed
Simplify and generalize configurable working directory code in build workflow
The Windows builds of the application are cryptographically signed. The signing requires an "eToken" hardware authentication device be connected to the machine performing the signing. This means that it is necessary to use a self-hosted GitHub Actions runner for the Windows job of the build workflow rather than the runners hosted by GitHub. There are some unique characteristics of the self-hosted runner which the workflow code must accommodate. The default working directory of the self-hosted runner is not suitable to perform the build under because the the resulting folder structure produced paths that exceeded the ridiculously small maximum path length of Windows. So the workflow must be configured to use a custom working directory with a short path (`C:\a`). This custom working directory must be used only for the job running on the self-hosted Windows runner so the working directory of the relevant workflow steps are configured using a ternary expression. Previously, this expression had multiple conditions: * the value of the `runner.os` context item * the definition of a custom working directory value in the job matrix The second condition is entirely sufficient. The use of the first condition only added unnecessary complexity to the workflow code, and imposed a pointless limitation of only allowing the use of the custom working directory system on Windows runners. Removing the unnecessary condition makes the workflow easier to understand and maintain, and makes it possible to configure any job to use a custom working directory if necessary.
1 parent 3d82cb3 commit ff055d0

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

.github/workflows/build.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ jobs:
378378
CREATE_USERNAME: ${{ secrets.CREATE_USERNAME }}
379379
CREATE_PASSWORD: ${{ secrets.CREATE_PASSWORD }}
380380
CREATE_CLIENT_SECRET: ${{ secrets.CREATE_CLIENT_SECRET }}
381-
working-directory: ${{ runner.os == 'Windows' && matrix.config.working-directory || './' }}
381+
working-directory: ${{ matrix.config.working-directory || './' }}
382382
run: |
383383
# See: https://www.electron.build/code-signing
384384
if [ $CAN_SIGN = false ] || [ $IS_WINDOWS_CONFIG = true ]; then
@@ -408,7 +408,7 @@ jobs:
408408
if: >
409409
needs.select-targets.outputs.merge-channel-files == 'true' &&
410410
matrix.config.mergeable-channel-file == 'true'
411-
working-directory: ${{ runner.os == 'Windows' && matrix.config.working-directory || './' }}
411+
working-directory: ${{ matrix.config.working-directory || './' }}
412412
run: |
413413
staged_channel_files_path="${{ runner.temp }}/staged-channel-files"
414414
mkdir "$staged_channel_files_path"
@@ -428,13 +428,13 @@ jobs:
428428
with:
429429
if-no-files-found: error
430430
name: ${{ env.STAGED_CHANNEL_FILES_ARTIFACT }}
431-
path: ${{ runner.os == 'Windows' && matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.STAGED_CHANNEL_FILES_PATH) || env.STAGED_CHANNEL_FILES_PATH }}
431+
path: ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.STAGED_CHANNEL_FILES_PATH) || env.STAGED_CHANNEL_FILES_PATH }}
432432

433433
- name: Upload [GitHub Actions]
434434
uses: actions/upload-artifact@v3
435435
with:
436436
name: ${{ env.JOB_TRANSFER_ARTIFACT }}
437-
path: ${{ runner.os == 'Windows' && matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.BUILD_ARTIFACTS_PATH) || env.BUILD_ARTIFACTS_PATH }}
437+
path: ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.BUILD_ARTIFACTS_PATH) || env.BUILD_ARTIFACTS_PATH }}
438438

439439
- name: Manual Clean up for self-hosted runners
440440
if: runner.os == 'Windows' && matrix.config.working-directory

0 commit comments

Comments
 (0)