mirror of
https://github.com/openai/codex.git
synced 2026-11-14 21:40:39 +00:00
Add authenticated GCS caching for Bazel CI and releases (#61187)
## What changed - Authenticate eligible protected `main` runs and Rust release tags with GitHub OIDC. Allow cache uploads only on `main` pushes; use read-only access for manual runs and release tags, and leave pull requests without GCS credentials. - Rename the shared wrapper to `.github/scripts/run_bazel.py` and route Bazel callers through it. Disable the disk cache in GitHub Actions and default macOS GCS connections to 20 while respecting explicit limits. - Gate additional Bazel release artifacts on `CODEX_BAZEL_RELEASES` and cache configuration, sharing the selected build systems across building, signing, and packaging. Keep Cargo as the default and prepare native Windows dependencies for Bazel releases. - Add a `Bazel result` check for the full workflow and extend Bazel job timeouts. ## Testing Add wrapper tests for cache access by event, argument preservation, and macOS connection limits. The wrapper test suite passes. GitOrigin-RevId: d85edbd083acfaa8bafaa8fd5241daed3e9ef871
This commit is contained in:
committed by
copyberry
parent
d0221bc947
commit
4490060db6
@@ -20,7 +20,7 @@ The workflows in this directory are split so that pull requests get fast, review
|
||||
## 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.
|
||||
This re-verifies the merged Bazel path and populates the public GCS cache.
|
||||
- `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
|
||||
@@ -35,3 +35,21 @@ The workflows in this directory are split so that pull requests get fast, review
|
||||
- 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.
|
||||
|
||||
### 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.
|
||||
|
||||
Reference in New Issue
Block a user