ci: fall back to GitHub-hosted runners in forks (#13364)

* ci: run core test workflows on GitHub-hosted runners in forks

Blacksmith runners are scoped to the Kilo-Org organisation, so every job
pinned to a blacksmith-* label queues indefinitely in a fork and is
eventually cancelled without running. Core test CI is therefore dead in
forks: contributors cannot validate a change before opening a PR.

Select the runner from github.repository instead of hardcoding it, so the
canonical repo keeps its Blacksmith runners byte-for-byte and forks fall
back to the GitHub-hosted equivalent. The test.yml unit matrix bakes hosts
into JSON, so it routes through emit_settings, which substitutes the two
labels from LINUX_HOST/WINDOWS_HOST.

pull_request runs execute in the base repo, so PRs sent to Kilo-Org are
unaffected; only pushes and PRs inside a fork change behaviour.

Follow-up to (11210), where these guards were trimmed on the review note
"core test infrastructure (if this fails on forks we should look into that
instead)".

Agent-Signature: claude-opus-5-high on behalf of matt wilkie

* ci: drop test.yml from the fork runner fallback

The Linux sandbox suite cannot pass on a GitHub-hosted runner. Ubuntu 24.04
ships kernel.apparmor_restrict_unprivileged_userns=1, which blocks the
Bubblewrap user-namespace bootstrap that backendSupport() probes, and
packages/core/test/kilocode/linux-sandbox.test.ts asserts support.available is
true unconditionally on Linux. Routing test.yml to ubuntu-latest in forks would
therefore turn a cancelled required check into a failing one.

Revert test.yml to its base state and keep the fallback on the five workflows
that do not exercise the sandbox. Making test.yml fork-capable needs a decision
about relaxing that sysctl on CI runners, which is Kilo-Org's call, not
something to smuggle into a runner-selection change.

Reported by the Codex review bot on PR 13364.

Agent-Signature: claude-opus-5-high on behalf of matt wilkie

* ci: re-trigger pipeline (flaky httpapi-pty test on loaded shard)

---------

Co-authored-by: maphew <486200+maphew@users.noreply.github.com>
This commit is contained in:
matt wilkie
2026-08-28 08:42:35 -07:00
committed by GitHub
parent 667821fd84
commit 38f93ec1d1
5 changed files with 11 additions and 11 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ on:
jobs:
build:
name: Build docs site
runs-on: blacksmith-4vcpu-ubuntu-2404 # kilocode_change
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
steps:
- name: Checkout repository
uses: actions/checkout@v6 # kilocode_change
+3 -3
View File
@@ -16,7 +16,7 @@ env:
jobs:
changes:
name: detect JetBrains changes
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
outputs:
jetbrains: ${{ github.event_name == 'workflow_dispatch' && 'true' || steps.filter.outputs.jetbrains }}
steps:
@@ -43,7 +43,7 @@ jobs:
name: jetbrains
needs: changes
if: github.event_name == 'workflow_dispatch' || needs.changes.outputs.jetbrains == 'true'
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
defaults:
run:
shell: bash
@@ -104,7 +104,7 @@ jobs:
- changes
- unit
if: always()
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
steps:
- name: Verify JetBrains jobs passed
run: |
+1 -1
View File
@@ -21,7 +21,7 @@ on:
jobs:
unit:
name: unit tests
runs-on: blacksmith-4vcpu-ubuntu-2404 # kilocode_change
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
defaults:
run:
shell: bash
+4 -4
View File
@@ -11,7 +11,7 @@ jobs:
# kilocode_change start
changes:
name: detect typecheck changes
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
outputs:
javascript: ${{ github.event_name == 'workflow_dispatch' && 'true' || steps.filter.outputs.javascript }}
jetbrains: ${{ github.event_name == 'workflow_dispatch' && 'true' || steps.filter.outputs.jetbrains }}
@@ -45,7 +45,7 @@ jobs:
name: typecheck-js
needs: changes # kilocode_change
if: github.event_name == 'workflow_dispatch' || needs.changes.outputs.javascript == 'true' # kilocode_change
runs-on: blacksmith-4vcpu-ubuntu-2404 # kilocode_change
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
steps:
- name: Checkout repository
uses: actions/checkout@v6 # kilocode_change
@@ -66,7 +66,7 @@ jobs:
name: typecheck-jetbrains
needs: changes
if: github.event_name == 'workflow_dispatch' || needs.changes.outputs.jetbrains == 'true'
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
steps:
- name: Checkout repository
uses: actions/checkout@v6
@@ -91,7 +91,7 @@ jobs:
required:
name: typecheck
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
needs:
- typecheck-js
- changes
+2 -2
View File
@@ -59,7 +59,7 @@ jobs:
needs: check-paths
if: needs.check-paths.outputs.matched == 'true'
name: Visual Regression (kilo-ui) # kilocode_change
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
timeout-minutes: 15
steps:
@@ -221,7 +221,7 @@ jobs:
needs: check-paths
if: needs.check-paths.outputs.matched == 'true'
name: Visual Regression (kilo-vscode webview) # kilocode_change
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: ${{ github.repository == 'Kilo-Org/kilocode' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} # kilocode_change
timeout-minutes: 15
env:
NODE_OPTIONS: --max-old-space-size=4096