diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13290f04116d..f6ece853a934 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,13 +13,16 @@ concurrency: group: ci-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} +# Blacksmith runners only exist under the pingdotgg org. Every job picks its +# runner with `case(github.repository_owner == 'pingdotgg', , )` +# so forks run the same CI on GitHub-hosted runners. New jobs should do the same. jobs: # Lint, typecheck, and the desktop build each get a runner so they run side by # side instead of one after another. The `Check` job at the end of this file # passes only when every other job does. lint: name: Lint - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -57,7 +60,7 @@ jobs: typecheck: name: Typecheck - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -83,7 +86,7 @@ jobs: build: name: Build - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -137,7 +140,7 @@ jobs: # per runner is unchanged. test: name: Test - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -201,7 +204,7 @@ jobs: # started last and ran alone for about 40s after everything else finished. test_web: name: Test Web - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -230,7 +233,7 @@ jobs: # split files by recorded duration (apps/server/src/testUtils/weightedShardSequencer.ts). test_server: name: Test Server ${{ matrix.shard }} - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-4vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 strategy: fail-fast: false @@ -299,7 +302,7 @@ jobs: # On Blacksmith like every other job here: the GitHub-hosted queue is shared # with the PR bots and can leave this job waiting until it is abandoned, # which fails `Check` on an otherwise green run. - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-2vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 5 steps: - name: Require transfer measurements @@ -312,7 +315,7 @@ jobs: # for checks that take under 3s, on the critical path of every PR. rust: name: Rust - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-4vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -346,7 +349,7 @@ jobs: # the diff cannot be resolved, the lint runs. mobile_native_changes: name: Mobile Native Changes - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-2vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 5 permissions: contents: read @@ -424,7 +427,7 @@ jobs: # Skip only on an explicit "no": a gate job that failed or errored leaves the # output empty, and that must run the lint rather than silently skip it. if: ${{ !cancelled() && needs.mobile_native_changes.outputs.changed != 'false' }} - runs-on: blacksmith-6vcpu-macos-26 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-6vcpu-macos-26', 'macos-26') }} timeout-minutes: 10 steps: - name: Checkout @@ -452,7 +455,7 @@ jobs: release_smoke: name: Release Smoke - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 10 steps: - name: Checkout @@ -497,7 +500,7 @@ jobs: mobile_native_static_analysis, release_smoke, ] - runs-on: blacksmith-2vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-2vcpu-ubuntu-2404', 'ubuntu-24.04') }} timeout-minutes: 5 steps: - name: Require every job to pass diff --git a/.github/workflows/mobile-fingerprint-check.yml b/.github/workflows/mobile-fingerprint-check.yml index b8b872f019f6..32fc08f913fb 100644 --- a/.github/workflows/mobile-fingerprint-check.yml +++ b/.github/workflows/mobile-fingerprint-check.yml @@ -24,7 +24,7 @@ concurrency: jobs: fingerprint: name: Native fingerprint diff - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-ubuntu-2404', 'ubuntu-24.04') }} permissions: contents: read issues: write diff --git a/.github/workflows/windows-tests.yml b/.github/workflows/windows-tests.yml index 3a70ad5a26a0..9e6c66c7e881 100644 --- a/.github/workflows/windows-tests.yml +++ b/.github/workflows/windows-tests.yml @@ -26,7 +26,7 @@ permissions: jobs: test: name: Test (${{ inputs.package || 'all non-server' }}) - runs-on: blacksmith-8vcpu-windows-2025 + runs-on: ${{ case(github.repository_owner == 'pingdotgg', 'blacksmith-8vcpu-windows-2025', 'windows-2025') }} timeout-minutes: 45 steps: - name: Checkout