Priority: P1
Motivation
Ordinary Rust PRs currently build the runtime target twice, but the builds serve different purposes:
test-docker.yml exports a local AMD64 image and runs nine container/configuration checks against it;
zfnd-deploy-nodes-gcp.yml calls the reusable publication workflow, builds AMD64 and ARM64, pushes digests to GAR, creates the multi-arch manifest, and exercises attestations/publication metadata. Deploy jobs themselves skip on PRs.
Removing the deployment build from PRs is therefore an explicit reduction in per-PR ARM64 and publication-path coverage. The proposed policy is to keep that coverage on targeted PRs, all relevant main pushes, and releases—not on every source-only Rust PR.
Proposed change
- Keep
test-docker.yml triggered by ordinary Rust changes so the runtime image still compiles and its configuration behavior remains merge-blocking.
- Restrict the deployment/publication workflow's PR trigger to inputs that can affect cross-platform or publication behavior:
docker/** and .dockerignore;
- workspace/package
Cargo.toml and Cargo.lock files;
rust-toolchain.toml and .cargo/config.toml;
- the reusable Docker build workflow;
- the deployment workflow;
- any action/script directly invoked by those workflows.
- Do not trigger the full publication path for a PR that changes only
*.rs files.
- Preserve the current full build on relevant pushes to
main and releases, with failure issue reporting for non-PR failures.
- Preserve
workflow_dispatch so a maintainer can build a branch/PR image in GAR for manual testing.
- Document the accepted tradeoff: architecture-specific source regressions can reach
main; the post-merge ARM64 build remains the alerted backstop. Revisit if ARM64 failures are observed.
Acceptance criteria
Part of the Improve CI program (#11196)
Drafted with Claude Code from the comparative analysis and the reviewed plan; independently reviewed and corrected with OpenAI Codex. Maintainers remain responsible for validating measurements and approving coverage tradeoffs.
Priority: P1
Motivation
Ordinary Rust PRs currently build the runtime target twice, but the builds serve different purposes:
test-docker.ymlexports a local AMD64 image and runs nine container/configuration checks against it;zfnd-deploy-nodes-gcp.ymlcalls the reusable publication workflow, builds AMD64 and ARM64, pushes digests to GAR, creates the multi-arch manifest, and exercises attestations/publication metadata. Deploy jobs themselves skip on PRs.Removing the deployment build from PRs is therefore an explicit reduction in per-PR ARM64 and publication-path coverage. The proposed policy is to keep that coverage on targeted PRs, all relevant
mainpushes, and releases—not on every source-only Rust PR.Proposed change
test-docker.ymltriggered by ordinary Rust changes so the runtime image still compiles and its configuration behavior remains merge-blocking.docker/**and.dockerignore;Cargo.tomlandCargo.lockfiles;rust-toolchain.tomland.cargo/config.toml;*.rsfiles.mainand releases, with failure issue reporting for non-PR failures.workflow_dispatchso a maintainer can build a branch/PR image in GAR for manual testing.main; the post-merge ARM64 build remains the alerted backstop. Revisit if ARM64 failures are observed.Acceptance criteria
mainpushes and releases retain the full publication path.Part of the Improve CI program (#11196)
Drafted with Claude Code from the comparative analysis and the reviewed plan; independently reviewed and corrected with OpenAI Codex. Maintainers remain responsible for validating measurements and approving coverage tradeoffs.