mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
ebb7980369
## Why Bazel remote configuration was selected in several CI scripts and workflow steps. That made the BuildBuddy tenant policy easy to duplicate and harder to audit, especially for fork pull requests that must not use the OpenAI tenant. This builds on [sluongng/buildbuddy-ci-host-routing](https://github.com/openai/codex/compare/main...sluongng:codex:sluongng/buildbuddy-ci-host-routing) and consolidates the policy in one place. ## What to do if this breaks you See `codex-rs/docs/bazel.md` for details. TLDR: 1. make a BuildBuddy API key and put it in `~/.bazelrc` 2. if you're an OpenAI employee, add `common --config=buildbuddy-openai-rbe` to `user.bazelrc` in the repo root Run `just bazel-test` to ensure it works. Note that `just bazel-remote-test` no longer exists, you need to select a remote configuration as documented to use RBE. ## What changed - Add `.github/scripts/run_bazel_with_buildbuddy.py` as the shared Bazel wrapper and Python library. It selects the OpenAI host only for trusted upstream GitHub Actions runs, routes keyed fork runs to the generic host, and falls back to local Bazel execution when no key is available. - Move endpoint selection into explicit `.bazelrc` configurations and update Bazel CI, query helpers, and `rusty_v8` staging to use the shared policy. Loading-phase target-discovery queries remain local. - Add wrapper and `rusty_v8` unit coverage, plus `just test-scripts` for the `.github/scripts` Python tests. - Document local Bazel usage, `user.bazelrc` setup, BuildBuddy configurations, and CI behavior in `codex-rs/docs/bazel.md`. ## Validation - `just test-scripts` - `bash -n .github/scripts/run-bazel-ci.sh .github/scripts/run-bazel-query-ci.sh .github/scripts/run-argument-comment-lint-bazel.sh scripts/list-bazel-clippy-targets.sh` - `python3 -m py_compile .github/scripts/run_bazel_with_buildbuddy.py .github/scripts/test_run_bazel_with_buildbuddy.py .github/scripts/test_rusty_v8_bazel.py .github/scripts/rusty_v8_bazel.py` - `ruff check .github/scripts/run_bazel_with_buildbuddy.py .github/scripts/test_run_bazel_with_buildbuddy.py .github/scripts/test_rusty_v8_bazel.py .github/scripts/rusty_v8_bazel.py`
53 lines
1.9 KiB
Bash
Executable File
53 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "${repo_root}"
|
|
|
|
windows_cross_compile=0
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--windows-cross-compile)
|
|
windows_cross_compile=1
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [--windows-cross-compile]" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Resolve the dynamic targets before printing anything so callers do not
|
|
# continue with a partial list if `bazel query` fails. Target discovery is
|
|
# local on all platforms.
|
|
manual_rust_test_targets="$(
|
|
./.github/scripts/run-bazel-query-ci.sh \
|
|
--output=label \
|
|
-- 'kind("rust_test rule", attr(tags, "manual", //codex-rs/... except //codex-rs/v8-poc/...))'
|
|
)"
|
|
if [[ "${RUNNER_OS:-}" != "Windows" ]]; then
|
|
# Non-Windows clippy jobs lint the native test binaries; the
|
|
# Windows-cross binaries exist only for the fast Windows test leg.
|
|
manual_rust_test_targets="$(printf '%s\n' "${manual_rust_test_targets}" | grep -v -- '-windows-cross-bin$' || true)"
|
|
elif [[ $windows_cross_compile -eq 1 ]]; then
|
|
# `bazel query` is intentionally pre-analysis and does not remove targets
|
|
# made incompatible by `target_compatible_with`. Sharded integration tests
|
|
# add native-only manual helpers such as `core-all-test-bin`, plus separate
|
|
# `core-all-test-windows-cross-bin` helpers for the Windows cross leg. Keep
|
|
# the Windows helpers and unit-test helpers, but do not pass the native-only
|
|
# sharded integration helpers as explicit clippy targets.
|
|
manual_rust_test_targets="$(printf '%s\n' "${manual_rust_test_targets}" | grep -v -- '-test-bin$' || true)"
|
|
fi
|
|
|
|
printf '%s\n' \
|
|
"//codex-rs/..." \
|
|
"-//codex-rs/v8-poc:all"
|
|
|
|
# `--config=clippy` on the `workspace_root_test` wrappers does not lint the
|
|
# underlying `rust_test` binaries. Add the internal manual `*-unit-tests-bin`
|
|
# targets explicitly so inline `#[cfg(test)]` code is linted like
|
|
# `cargo clippy --tests`.
|
|
printf '%s\n' "${manual_rust_test_targets}"
|