The GitHub workflow for testing Docker builds on macOS was consistently failing. This commit downgrades the macOS version used for Docker tests to `macos-13`, which is the latest Intel-based macOS runner, instead of the ARM-based `macos-14` which `macos-latest` points to. This change is necessary because the hypervisor framework required for Docker is not supported on the ARM-based macOS runners provided by GitHub. This issue was causing failures when attempting to run Colima with QEMU using `-accel hvf`, which is unsupported on these runners. Switching to an Intel-based runner resolves this issue. Related issues: - actions/runner-images#9460 - actions/runner-images#9741 - abiosoft/colima#1023
110 lines
3.6 KiB
YAML
110 lines
3.6 KiB
YAML
name: checks.build
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
jobs:
|
|
build-web:
|
|
strategy:
|
|
matrix:
|
|
os: [ macos, ubuntu, windows ]
|
|
mode: [
|
|
# Vite mode: https://vitejs.dev/guide/env-and-mode.html
|
|
development, # Used by `dev` command
|
|
production, # Used by `build` command
|
|
# Vitest mode: https://vitest.dev/guide/cli.html
|
|
test, # Used by Vitest
|
|
]
|
|
fail-fast: false # Allows to see results from other combinations
|
|
runs-on: ${{ matrix.os }}-latest
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v4
|
|
-
|
|
name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
-
|
|
name: Install dependencies
|
|
uses: ./.github/actions/npm-install-dependencies
|
|
-
|
|
name: Build web
|
|
run: npm run build -- --mode ${{ matrix.mode }}
|
|
-
|
|
name: Verify web build artifacts
|
|
run: npm run check:verify-build-artifacts -- --web
|
|
|
|
build-desktop:
|
|
strategy:
|
|
matrix:
|
|
os: [ macos, ubuntu, windows ]
|
|
mode: [
|
|
# electron-vite modes: https://electron-vite.org/guide/env-and-mode.html#global-env-variables
|
|
development, # Used by `dev` command
|
|
production, # Used by `build` and `preview` commands
|
|
]
|
|
fail-fast: false # Allows to see results from other combinations
|
|
runs-on: ${{ matrix.os }}-latest
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v4
|
|
-
|
|
name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
-
|
|
name: Install dependencies
|
|
uses: ./.github/actions/npm-install-dependencies
|
|
-
|
|
name: Prebuild desktop
|
|
run: npm run electron:prebuild -- --mode ${{ matrix.mode }}
|
|
-
|
|
name: Verify unbundled desktop build artifacts
|
|
run: npm run check:verify-build-artifacts -- --electron-unbundled
|
|
-
|
|
name: Build (bundle and package) desktop application
|
|
run: npm run electron:build -- --publish never
|
|
-
|
|
name: Verify bundled desktop build artifacts
|
|
run: npm run check:verify-build-artifacts -- --electron-bundled
|
|
|
|
build-docker:
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-13 # Downgraded due to lack of nested virtualization support in ARM-based runners (See: actions/runner-images#9460, actions/runner-images#9741, abiosoft/colima#1023)
|
|
- ubuntu-latest
|
|
# - windows-latest # Windows runners do not support Linux containers
|
|
fail-fast: false # Allows to see results from other combinations
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v4
|
|
-
|
|
name: Install Docker on macOS
|
|
if: contains(matrix.os, 'macos') # macOS runner is missing Docker
|
|
run: |-
|
|
# Install Docker
|
|
brew install docker
|
|
# Docker on macOS misses daemon due to licensing, so install colima as runtime
|
|
brew install colima
|
|
# Start the daemon
|
|
colima start
|
|
-
|
|
name: Build Docker image
|
|
run: docker build -t undergroundwires/privacy.sexy:latest .
|
|
-
|
|
name: Run Docker image on port 8080
|
|
run: docker run -d -p 8080:80 --rm --name privacy.sexy undergroundwires/privacy.sexy:latest
|
|
-
|
|
name: Enforce IPv4 Connectivity # Used due to GitHub runners' lack of IPv6 support, preventing request timeouts.
|
|
uses: ./.github/actions/force-ipv4
|
|
-
|
|
name: Check server is up and returns HTTP 200
|
|
run: >-
|
|
node ./scripts/verify-web-server-status.js \
|
|
--url http://localhost:8080 \
|
|
--max-retries ${{ matrix.os == 'macos' && '90' || '30' }}
|