## What changed Wire signer-service settings from repository variables into the PKCS11 setup action for macOS binary, DMG, and provisioned bundle releases. Keep the feature disabled by default; Azure continues to supply tools, certificates, and notarization. Require signing mode, a pinned certificate, GitHub OIDC, and valid endpoint, purpose, and key ID inputs when enabled. Reject pre-supplied OIDC tokens and providers missing signer-service support markers, then export the signer-service backend configuration. GitOrigin-RevId: d6c9f2f65512892b286e4bbeb271633e23a96a24
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
- Required checks run against GitHub's synthetic merge commit, not the pull
request head alone. This includes changes already on
mainand catches conflicts before they reach the branch. bazel.ymlis the main pre-merge verification path for Rust code. It runs Bazeltestand Bazelclippyon the supported Bazel targets, including the generated Rust test binaries needed to lint inline#[cfg(test)]code.rust-ci.ymlkeeps the Cargo-native PR checks intentionally small:cargo fmt --checkcargo shearargument-comment-linton Linux, macOS, and Windowstools/argument-comment-lintpackage tests when the lint or its workflow wiring changes
Post-Merge On main
bazel.ymlalso runs on pushes tomain. This re-verifies the merged Bazel path and populates the public GCS cache.rust-ci-full.ymlis the full Cargo-native verification workflow. It keeps the heavier checks off the PR path while still validating them after merge:- the full Cargo
clippymatrix - the full Cargo
nextestmatrix 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
- the full Cargo
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.ymlfast enough that it usually does not dominate PR latency. - Reserve
rust-ci-full.ymlfor heavyweight Cargo-native coverage that Bazel does not replace yet.
Public Bazel action cache
Set CODEX_BAZEL_GCS_BUCKET and CODEX_BAZEL_GCS_WORKLOAD_IDENTITY_PROVIDER
as GitHub Actions secrets in openai/codex. They identify the bucket and its
GitHub OIDC provider. The job exchanges its identity for temporary Google
credentials. Protected main pushes populate the cache. Protected main
dispatches and Rust release tags can read it. Pull requests build without
GCS credentials.
After a main push populates the cache and a separate runner reports a remote
cache hit, set the repository variable CODEX_BAZEL_RELEASES to true to
build the additional Bazel artifacts on Rust release tags. The release
workflow selects one build-system matrix for the build, signing, and
packaging jobs. Cargo artifacts remain the default.
Once public Bazel CI passes, require the Bazel result check in the main
branch ruleset. It reports the result of the full Bazel workflow.