ci: move workflows to self-hosted Air/Mini/EVO runners
Replace GitHub-hosted ubuntu-latest and macos-26 runners with org self-hosted labels so PR/push CI is not blocked by Actions spending limits. Linux jobs use [self-hosted, Linux, X64, evo]; macOS jobs use [self-hosted, macOS, ARM64]. Multi-arch image arm64 builds run on macOS ARM64 runners; Windows desktop releases still use windows-2022 when Authenticode signing is configured. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
This commit is contained in:
parent
c8cab17e73
commit
0ebf438b4c
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
@ -14,7 +14,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
@ -29,7 +29,7 @@ jobs:
|
|||||||
|
|
||||||
check:
|
check:
|
||||||
name: Typecheck
|
name: Typecheck
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
@ -47,7 +47,7 @@ jobs:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
name: Production builds
|
name: Production builds
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
@ -76,7 +76,7 @@ jobs:
|
|||||||
|
|
||||||
test:
|
test:
|
||||||
name: Unit tests
|
name: Unit tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
@ -94,7 +94,7 @@ jobs:
|
|||||||
|
|
||||||
test-integration:
|
test-integration:
|
||||||
name: Postgres journeys
|
name: Postgres journeys
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
@ -118,7 +118,7 @@ jobs:
|
|||||||
name: Publish compatible mobile update
|
name: Publish compatible mobile update
|
||||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||||
needs: [lint, check, build, test, test-integration, test-e2e]
|
needs: [lint, check, build, test, test-integration, test-e2e]
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
concurrency:
|
concurrency:
|
||||||
group: mobile-production-update
|
group: mobile-production-update
|
||||||
@ -271,7 +271,7 @@ jobs:
|
|||||||
github.ref == 'refs/heads/main' &&
|
github.ref == 'refs/heads/main' &&
|
||||||
vars.PRODUCTION_DEPLOY_ENABLED == 'true'
|
vars.PRODUCTION_DEPLOY_ENABLED == 'true'
|
||||||
needs: [lint, check, build, test, test-integration, test-e2e]
|
needs: [lint, check, build, test, test-integration, test-e2e]
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
concurrency:
|
concurrency:
|
||||||
group: production
|
group: production
|
||||||
|
|||||||
@ -25,7 +25,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
screenshot:
|
screenshot:
|
||||||
name: macOS setup screenshot
|
name: macOS setup screenshot
|
||||||
runs-on: macos-26
|
runs-on: [self-hosted, macOS, ARM64]
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
|||||||
@ -13,7 +13,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
screenshots:
|
screenshots:
|
||||||
name: Capture Android UI
|
name: Capture Android UI
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
|
|||||||
6
.github/workflows/playwright.yml
vendored
6
.github/workflows/playwright.yml
vendored
@ -53,7 +53,7 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
playwright:
|
playwright:
|
||||||
name: Web E2E
|
name: Web E2E
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ inputs.publish_report && 'playwright-publication' || format('playwright-{0}', github.run_id) }}
|
group: ${{ inputs.publish_report && 'playwright-publication' || format('playwright-{0}', github.run_id) }}
|
||||||
@ -72,8 +72,8 @@ jobs:
|
|||||||
key: ${{ runner.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
|
key: ${{ runner.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
|
||||||
- name: Install Chromium
|
- name: Install Chromium
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
# Skip --with-deps: GitHub ubuntu-latest already has Chromium's OS libraries,
|
# Skip --with-deps when the EVO runner already has Chromium's OS libraries.
|
||||||
# and apt-get against azure.archive.ubuntu.com can stall until the job timeout.
|
# Re-enable --with-deps after provisioning a fresh self-hosted runner.
|
||||||
run: pnpm --filter @rakazo/web exec playwright install chromium
|
run: pnpm --filter @rakazo/web exec playwright install chromium
|
||||||
- name: Validate E2B credentials
|
- name: Validate E2B credentials
|
||||||
if: inputs.sandbox_provider == 'e2b'
|
if: inputs.sandbox_provider == 'e2b'
|
||||||
|
|||||||
@ -24,7 +24,7 @@ jobs:
|
|||||||
(github.event.workflow_run.event == 'pull_request' ||
|
(github.event.workflow_run.event == 'pull_request' ||
|
||||||
(github.event.workflow_run.event == 'push' &&
|
(github.event.workflow_run.event == 'push' &&
|
||||||
github.event.workflow_run.head_branch == 'main'))
|
github.event.workflow_run.head_branch == 'main'))
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
steps:
|
steps:
|
||||||
# workflow_run has repository secrets. Always use trusted default-branch code here;
|
# workflow_run has repository secrets. Always use trusted default-branch code here;
|
||||||
|
|||||||
15
.github/workflows/publish-server-image.yml
vendored
15
.github/workflows/publish-server-image.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
|||||||
installer-smoke:
|
installer-smoke:
|
||||||
name: Compose installer smokes
|
name: Compose installer smokes
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -49,7 +49,7 @@ jobs:
|
|||||||
validate:
|
validate:
|
||||||
name: Validate ${{ matrix.name }} image
|
name: Validate ${{ matrix.name }} image
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 90
|
timeout-minutes: 90
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -93,8 +93,9 @@ jobs:
|
|||||||
name: Build ${{ matrix.name }} ${{ matrix.arch }}
|
name: Build ${{ matrix.name }} ${{ matrix.arch }}
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
# Each architecture builds natively on its own runner and pushes by digest only.
|
# Each architecture builds natively on its own runner and pushes by digest only.
|
||||||
# No QEMU: GitHub hosts native arm64 runners, and emulated arm64 took hours for the
|
# amd64 on EVO; arm64 on macOS ARM64 (Air/Mini) because there is no Linux/arm64 runner.
|
||||||
# desktop-sized computer image. See docs/self-host.md (Published images and tags).
|
# No QEMU: emulated arm64 took hours for the desktop-sized computer image.
|
||||||
|
# See docs/self-host.md (Published images and tags).
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
timeout-minutes: 90
|
timeout-minutes: 90
|
||||||
permissions:
|
permissions:
|
||||||
@ -118,9 +119,9 @@ jobs:
|
|||||||
dockerfile: infra/sandboxes/computer/Dockerfile
|
dockerfile: infra/sandboxes/computer/Dockerfile
|
||||||
context: infra/sandboxes/computer
|
context: infra/sandboxes/computer
|
||||||
- arch: amd64
|
- arch: amd64
|
||||||
runner: ubuntu-latest
|
runner: [self-hosted, Linux, X64, evo]
|
||||||
- arch: arm64
|
- arch: arm64
|
||||||
runner: ubuntu-24.04-arm
|
runner: [self-hosted, macOS, ARM64]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
|
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
|
||||||
with:
|
with:
|
||||||
@ -171,7 +172,7 @@ jobs:
|
|||||||
name: Publish ${{ matrix.name }} image
|
name: Publish ${{ matrix.name }} image
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
14
.github/workflows/release-desktop.yml
vendored
14
.github/workflows/release-desktop.yml
vendored
@ -17,7 +17,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
validate:
|
validate:
|
||||||
name: Validate stable release
|
name: Validate stable release
|
||||||
runs-on: ubuntu-24.04
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
outputs:
|
outputs:
|
||||||
tag: ${{ steps.release.outputs.tag }}
|
tag: ${{ steps.release.outputs.tag }}
|
||||||
version: ${{ steps.release.outputs.version }}
|
version: ${{ steps.release.outputs.version }}
|
||||||
@ -93,9 +93,13 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
include='[{"os":"macos-26","artifact":"macos"},{"os":"ubuntu-24.04","artifact":"linux"}]'
|
include='[
|
||||||
|
{"labels":["self-hosted","macOS","ARM64"],"artifact":"macos"},
|
||||||
|
{"labels":["self-hosted","Linux","X64","evo"],"artifact":"linux"}
|
||||||
|
]'
|
||||||
if [[ "$WINDOWS_SIGNING" == "true" ]]; then
|
if [[ "$WINDOWS_SIGNING" == "true" ]]; then
|
||||||
include="$(jq -c '. + [{"os":"windows-2022","artifact":"windows"}]' <<<"$include")"
|
# No self-hosted Windows runner; Authenticode builds still use GitHub-hosted billing.
|
||||||
|
include="$(jq -c '. + [{"labels":"windows-2022","artifact":"windows"}]' <<<"$include")"
|
||||||
fi
|
fi
|
||||||
echo "include=$include" >> "$GITHUB_OUTPUT"
|
echo "include=$include" >> "$GITHUB_OUTPUT"
|
||||||
echo "windows=$WINDOWS_SIGNING" >> "$GITHUB_OUTPUT"
|
echo "windows=$WINDOWS_SIGNING" >> "$GITHUB_OUTPUT"
|
||||||
@ -103,7 +107,7 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
name: Build signed ${{ matrix.artifact }} artifacts
|
name: Build signed ${{ matrix.artifact }} artifacts
|
||||||
needs: validate
|
needs: validate
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.labels }}
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@ -261,7 +265,7 @@ jobs:
|
|||||||
publish:
|
publish:
|
||||||
name: Attest and publish complete release
|
name: Attest and publish complete release
|
||||||
needs: [validate, build]
|
needs: [validate, build]
|
||||||
runs-on: ubuntu-24.04
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
permissions:
|
permissions:
|
||||||
actions: read
|
actions: read
|
||||||
|
|||||||
2
.github/workflows/topology-verification.yml
vendored
2
.github/workflows/topology-verification.yml
vendored
@ -9,7 +9,7 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
topology:
|
topology:
|
||||||
name: Production topology smoke
|
name: Production topology smoke
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, Linux, X64, evo]
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
|
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user