Files
codex/.github/workflows
Tamir Duberstein daa90ac5cc [codex] pipeline Windows targets separately
The Windows release workflow builds x64 and ARM64 in one matrix.
Each target's packaging job therefore waits for all six matrix cells,
even though it consumes artifacts from only the three cells for its
target.

In alpha.19, ARM64's builds completed at 01:40:38 UTC, but its
packaging job was not created until x64 completed at 01:51:42 UTC.
It then entered the x64 runner queue alongside x64 packaging.

https://github.com/openai/codex/actions/runs/27484551090

Invoke the reusable workflow once per target. Each invocation retains
the three bundle builds and starts symbol and package jobs as soon as
those target-specific builds finish.

ARM64 packaging took 6m05s on ARM in alpha.18 and 6m08s on x64 in
alpha.19. Keep packaging on each target's build runner. The 11-minute
ARM64 lead absorbs its runner queue and avoids consuming x64 capacity
alongside the critical x64 package.
2026-06-13 23:34:47 -04:00
..

Workflow Strategy

The workflows in this directory are split so that pull requests get fast, review-friendly signal while main still gets the full cross-platform verification pass.

Pull Requests

  • bazel.yml is the main pre-merge verification path for Rust code. It runs Bazel test and Bazel clippy on the supported Bazel targets, including the generated Rust test binaries needed to lint inline #[cfg(test)] code.
  • rust-ci.yml keeps the Cargo-native PR checks intentionally small:
    • cargo fmt --check
    • cargo shear
    • argument-comment-lint on Linux, macOS, and Windows
    • tools/argument-comment-lint package tests when the lint or its workflow wiring changes

Post-Merge On main

  • bazel.yml also runs on pushes to main. This re-verifies the merged Bazel path and helps keep the BuildBuddy caches warm.
  • rust-ci-full.yml is the full Cargo-native verification workflow. It keeps the heavier checks off the PR path while still validating them after merge:
    • the full Cargo clippy matrix
    • the full Cargo nextest matrix via per-platform archive-backed shards
    • Windows ARM64 nextest archives cross-compiled on Windows x64, then replayed on native Windows ARM64 shards
    • release-profile Cargo builds
    • cross-platform argument-comment-lint
    • Linux remote-env tests

Rule Of Thumb

  • If a build/test/clippy check can be expressed in Bazel, prefer putting the PR-time version in bazel.yml.
  • Keep rust-ci.yml fast enough that it usually does not dominate PR latency.
  • Reserve rust-ci-full.yml for heavyweight Cargo-native coverage that Bazel does not replace yet.