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

@ -38,7 +38,7 @@ jobs:
# ─────────────────────────────────────────────────────────────────────
detect:
name: Detect affected areas
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 10
outputs:
python: ${{ steps.classify.outputs.python }}
@ -181,7 +181,7 @@ jobs:
name: CI review comment (live)
needs: [detect, review-labels, lockfile-diff, supply-chain, osv-scanner, uv-lockfile, history-check, contributor-check, e2e-desktop]
if: always() && github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork != true
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 40
steps:
- name: Checkout code
@ -274,7 +274,7 @@ jobs:
# we don't require docker to pass rn because it's so slow lol
# - docker
if: always()
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 10
outputs:
needs-json: ${{ steps.evaluate.outputs.needs-json }}
@ -316,7 +316,7 @@ jobs:
name: CI timing report
needs: [all-checks-pass, docker]
if: always()
runs-on: ubuntu-latest
runs-on: arc-runner-set
timeout-minutes: 10
steps:
- name: Checkout code