feat(ci): migrate all workflows to GKE self-hosted runners

Swap all `runs-on: ubuntu-latest` to `runs-on: arc-runner-set` all jobs.
The ARM docker build job in docker.yml uses `${{ matrix.runner }}`
and is left untouched since the GKE runner pool is x86_64 only.

Runners are backed by ARC (Actions Runner Controller) on a GKE cluster
with a spot preemptible node pool that scales based on job demand.

Use the baked Electron dependencies for the desktop E2E job.
This commit is contained in:
ethernet 2026-07-17 16:40:28 -04:00
parent dbe14424ed
commit d4e940f241
22 changed files with 48 additions and 55 deletions

View file

@ -30,7 +30,7 @@ jobs:
lint-diff:
name: ruff + ty diff
if: inputs.event_name == 'pull_request'
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 10
steps:
- name: Checkout code
@ -108,7 +108,7 @@ jobs:
env:
HEAD_REF: ${{ inputs.event_name == 'pull_request' && github.head_ref || github.ref_name }}
run: |
python scripts/lint_diff.py \
python3 scripts/lint_diff.py \
--base-ruff .lint-reports/base/ruff.json \
--head-ruff .lint-reports/head/ruff.json \
--base-ty .lint-reports/base/ty.json \
@ -126,7 +126,7 @@ jobs:
# ``lint-diff`` job above runs independently so reviewers still get
# the diff comment even when enforcement fails.
name: ruff enforcement (blocking)
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 5
steps:
- name: Checkout code
@ -157,7 +157,7 @@ jobs:
# shebang scripts via subprocess, bare open() without encoding=, etc.
# See scripts/check-windows-footguns.py for the full rule list.
name: Windows footguns (blocking)
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 5
steps:
- name: Checkout code
@ -169,4 +169,4 @@ jobs:
python-version: "3.11"
- name: Run footgun checker
run: python scripts/check-windows-footguns.py --all
run: python3 scripts/check-windows-footguns.py --all