Files
rustfs/.github/AGENTS.md
Chris fca83c72e4 ci: move compile-free and prebuilt-binary lanes to hosted runners (#8679)
* ci: move compile-free and prebuilt-binary lanes to hosted runners

Standard GitHub-hosted runners are free for this public repository, while
every sm-standard minute is paid self-hosted capacity. Move the jobs that
never compile (quick checks, typos, scope selection, the required-checks
aggregate, audit, closed-PR cancellation) and the two s3-tests lanes that
only run the prebuilt debug binary to ubuntu-latest, drop the wget install
the custom image needed for typos, and move the upgrade-compatibility
workflow, whose build shape already runs on hosted runners in
e2e-distributed, with renamed cache keys so the hosted and self-hosted
images never share a rust-cache entry. Gate the package summary job on
resolve having run, so development builds stop starting a pod to report a
skipped job.

* docs(ci): document runner billing and placement rules

Record in .github/workflows/README.md which runner labels GitHub bills
(none for this public repository), which ones RustFS pays for, the rule for
when a job may leave ubuntu-latest, the rust-cache single-writer and
same-image constraints, the patterns that have leaked self-hosted minutes,
and a checklist for new or moved jobs. Point to it from .github/AGENTS.md,
docs/testing/ci-gates.md and the ci.yml placement comment so the rule has a
single home.
2026-10-19 08:55:29 +09:00

1.7 KiB

GitHub Workflow Instructions

Applies to .github/.

Pull Requests

PR conventions (English title/body, template usage, --body-file with the heredoc pattern, review-thread etiquette) live in the root AGENTS.md under "Git and PR Baseline" — that section is the single normative home; do not duplicate its rules here.

Workflow Changes

  • Any change touching .github/workflows/ must pass actionlint (run from the repo root) with zero findings before commit/PR. Install via brew install actionlint, or the download script in the actionlint repo (rhysd/actionlint); make pre-pr does not cover workflow files, so this is the required check for them.
  • Custom self-hosted runner labels (sm-standard-*, dind-*) are declared in .github/actionlint.yaml. When introducing a new runs-on: label, declare it there in the same change. Never use the config or -ignore to silence real findings — fix the workflow (root AGENTS.md: make checks pass by fixing the cause, not by weakening the gate).
  • If shellcheck is installed, actionlint also lints run: scripts; treat those findings as part of the gate.
  • Runner placement and billing rules live in .github/workflows/README.md. A new job defaults to ubuntu-latest (free for this public repository); a self-hosted runs-on needs one of the reasons listed there, stated in a comment next to it, and a rust-cache key is never shared between the hosted and self-hosted images.

CI Alignment

When changing CI-sensitive behavior, keep local validation aligned with .github/workflows/ci.yml. Read the workflow file directly for the current gate steps — do not rely on (or add) a copied command list here; copies go stale. make pre-pr is the local equivalent of the main gate.