Skip to content

ci: run on GitHub's hosted runners, as a public repository - #21

Merged
cristiangirlea merged 2 commits into
mainfrom
ci/github-runners
Oct 15, 2026
Merged

cristiangirlea merged 2 commits into
mainfrom
ci/github-runners

Conversation

@cristiangirlea

Copy link
Copy Markdown
Owner

Why

The repository is public. The owner's rule for public repositories (2026-10-13) is that CI runs on GitHub's hosted runners with no CI_RUNNER gate and no lab scale set: GitHub does not meter Actions minutes for public repositories, and a stranger's pull request must never reach the lab's self-hosted runners. PR #20 added the lab routing before that rule existed; this reverses it.

What changed

  • .github/workflows/tests.yml, .github/workflows/model-smoke.yml: every job is runs-on: ubuntu-latest; the fork-gated vars.CI_RUNNER || 'ubuntu-latest' expressions and the lab-runner comments are gone; BENCH_RUNNER is the plain string GitHub-hosted ubuntu-latest.
  • .github/actions/compose/ deleted and its uses: steps and path filter removed: GitHub's runner images ship the Docker Compose v2 plugin, so the pinned install only served the lab image.
  • tests/python/test_workflows.py asserts the new shape and fails if a runs-on expression, a runner variable, a self-hosted label, a bare runner label or a local action under .github/actions comes back. It now collects *.yaml workflows as well as *.yml.
  • README.md, docs/testing.md (CI runners), docs/security.md: CI runs on GitHub's hosted runners because the repository is public; the lab-runner sizing and the Compose install notes are gone. actions/checkout stays hash-pinned with persist-credentials: false.

Tests run

  • docker compose -f docker/compose.yaml run --rm --no-deps python-tests: 127 tests OK (128 before: four compose-action tests removed, three runner-shape tests added).
  • Red check on tests.yml: the new test fails for ${{ vars.CI_RUNNER || 'ubuntu-latest' }}, [self-hosted, linux], a bare lab-php-python-ai-bridge label and a reinserted compose action step, and passes unchanged.
  • The PHP matrix, MCP, FrankenPHP integration and model smoke jobs run on this PR's checks; Real model smoke tests also gets a manual run on the branch.

Review

Independent review of d9ba43b. Blocking: the docs claimed that no self-hosted runner is registered for the repository and that no fork approval policy remains to keep, which only holds once the runner variable and the ARC scale set are removed outside this PR; fixed in bbbadba, which says no workflow names one and keeps the approval advice until none is registered. Non-blocking: the test did not collect *.yaml workflows (fixed in the same commit, the guard depends on it); the self-hosted regex and the ban on any .github/actions directory are broader than the rule (filed as an issue).

After the merge (owner's steps)

  1. gh variable delete CI_RUNNER -R cristiangirlea/php-python-ai-bridge
  2. In the infra repository, move php-python-ai-bridge from the runner repos (REPOS in config.mk, ci_runner_repos in tofu) to github_hosted_repos, as for harness (infra#57) and adanext-os (infra#61), in its own branch and PR.

Until step 2 is done, the fork approval setting for outside contributors stays as it is.

The repository is public, so GitHub does not meter its Actions minutes
and a fork's pull request must never reach the maintainer's lab runner.
Every job now runs on ubuntu-latest; the CI_RUNNER expressions, the
fork-gated fallback, the lab-only Docker Compose install action and the
fork-approval guidance that only mattered with a self-hosted runner are
gone. The workflow test asserts the new shape and fails if a runs-on
expression, a runner variable, a self-hosted label or a local action
comes back.
The review found the docs claiming that no self-hosted runner is
registered for the repository, which is true only after the runner
variable and the scale set are removed outside this change. Say instead
that no workflow names one and that approval for outside contributors
stays required until none is registered. The workflow test now collects
.yaml files too, so a workflow by that extension cannot slip past it.
@cristiangirlea
cristiangirlea merged commit 87c223a into main Oct 15, 2026
8 checks passed
@cristiangirlea
cristiangirlea deleted the ci/github-runners branch October 15, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant