Skip to content

ci: split fast PR Rust CI from full post-merge Cargo CI#16072

Merged
bolinfest merged 1 commit intomainfrom
pr16072
Mar 28, 2026
Merged

ci: split fast PR Rust CI from full post-merge Cargo CI#16072
bolinfest merged 1 commit intomainfrom
pr16072

Conversation

@bolinfest
Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest commented Mar 28, 2026

Summary

Split the old all-in-one rust-ci.yml into:

  • a PR-time Cargo workflow in rust-ci.yml
  • a full post-merge Cargo workflow in rust-ci-full.yml

This keeps the PR path focused on fast Cargo-native hygiene plus the Bazel build / test / clippy coverage in bazel.yml, while moving the heavyweight Cargo-native matrix to main.

Why

bazel.yml is now the main Rust verification workflow for pull requests. It already covers the Bazel build, test, and clippy signal we care about pre-merge, and it also runs on pushes to main to re-verify the merged tree and help keep the BuildBuddy caches warm.

What was still missing was a clean split for the Cargo-native checks that Bazel does not replace yet. The old rust-ci.yml mixed together:

  • fast hygiene checks such as cargo fmt --check and cargo shear
  • argument-comment-lint
  • the full Cargo clippy / nextest / release-build matrix

That made every PR pay for the full Cargo matrix even though most of that coverage is better treated as post-merge verification. The goal of this change is to leave PRs with the checks we still want before merge, while moving the heavier Cargo-native matrix off the review path.

What Changed

  • Renamed the old heavyweight workflow to rust-ci-full.yml and limited it to push on main plus workflow_dispatch.
  • Added a new PR-only rust-ci.yml that runs:
    • changed-path detection
    • cargo fmt --check
    • cargo shear
    • argument-comment-lint on Linux, macOS, and Windows
    • tools/argument-comment-lint package tests when the lint itself or its workflow wiring changes
  • Kept the PR workflow's gatherer as the single required Cargo-native status so branch protection can stay simple.
  • Added .github/workflows/README.md to document the intended split between bazel.yml, rust-ci.yml, and rust-ci-full.yml.
  • Preserved the recent Windows argument-comment-lint behavior from e02fd6e1d3 in rust-ci-full.yml, and mirrored cross-platform lint coverage into the PR workflow.

A few details are deliberate:

  • The PR workflow still keeps the Linux lint lane on the default-targets-only invocation for now, while macOS and Windows use the broader released-linter path.
  • This PR does not change bazel.yml; it changes the Cargo-native workflow around the existing Bazel PR path.

Testing

  • Rebasing this change onto main after e02fd6e1d3
  • ruby -e 'require "yaml"; %w[.github/workflows/rust-ci.yml .github/workflows/rust-ci-full.yml .github/workflows/bazel.yml].each { |f| YAML.load_file(f) }'

@bolinfest bolinfest merged commit b943664 into main Mar 28, 2026
22 checks passed
@bolinfest bolinfest deleted the pr16072 branch March 28, 2026 04:08
@github-actions github-actions bot locked and limited conversation to collaborators Mar 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants