Run exec-server compatibility tests under Bazel (#40736)

## What changed

- Add a Bazel test rule that runs the shared Noise relay compatibility suite with current or packaged Codex binaries.
- Cover both app-server/exec-server directions for the current build, release `0.149.1`, and the minimum supported release `0.145.0` on Linux x86-64.
- Remove the standalone version-skew download scripts and the protocol constant they used.

## Testing

The new `exec-server-current-version-test`, `exec-server-stable-release-test`, and `exec-server-minimum-release-test` targets exercise the compatibility suite.

GitOrigin-RevId: 6b3b91eea8e05a38bec1fac128afc54f0d654014
This commit is contained in:
Adam Perry @ OpenAI
2026-08-25 23:38:49 +00:00
committed by copyberry
parent 02c9f83f74
commit 62aacbb2c9
8 changed files with 104 additions and 161 deletions
@@ -1,100 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
minimum_supported_release="$(
sed -n 's/^pub const MINIMUM_SUPPORTED_CODEX_VERSION: &str = "\([^"]*\)";$/\1/p' \
"${repo_root}/codex-rs/exec-server-protocol/src/lib.rs"
)"
: "${minimum_supported_release:?minimum supported Codex release is missing}"
release_directory="$(mktemp -d "${TMPDIR:-/tmp}/codex-exec-server-skew.XXXXXX")"
trap 'rm -rf "${release_directory:?}"' EXIT
if [[ $# -eq 0 ]]; then
releases=(latest "${minimum_supported_release}")
else
releases=("$@")
fi
case "$(uname -s):$(uname -m)" in
Darwin:arm64) target="aarch64-apple-darwin" ;;
Darwin:x86_64) target="x86_64-apple-darwin" ;;
Linux:aarch64 | Linux:arm64) target="aarch64-unknown-linux-musl" ;;
Linux:x86_64) target="x86_64-unknown-linux-musl" ;;
*)
echo "Unsupported platform: $(uname -s) $(uname -m)" >&2
exit 1
;;
esac
asset="codex-${target}.tar.gz"
if [[ "$(uname -s)" == "Linux" ]] \
&& command -v apt-get >/dev/null \
&& command -v dpkg-deb >/dev/null \
&& command -v dpkg-architecture >/dev/null \
&& ! pkg-config --exists alsa glib-2.0 gobject-2.0 gio-2.0; then
# Debian-like hosts can download development metadata without sudo. The
# temporary sysroot still relies on runtime libraries installed on the host.
voice_package_directory="${release_directory}/voice-packages"
voice_sysroot="${release_directory}/voice-sysroot"
mkdir -p "${voice_package_directory}" "${voice_sysroot}"
(
cd "${voice_package_directory}"
apt-get download libasound2-dev libglib2.0-dev libcap-dev libffi-dev libmount-dev \
libpcre2-dev libselinux1-dev zlib1g-dev libblkid-dev libsepol-dev
)
for package in "${voice_package_directory}"/*.deb; do
dpkg-deb --extract "${package}" "${voice_sysroot}"
done
voice_multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
voice_library_directory="${voice_sysroot}/usr/lib/${voice_multiarch}"
for library in "${voice_library_directory}"/*.so; do
[[ -L "${library}" ]] || continue
library_target="$(readlink "${library}")"
if [[ ! -e "${voice_library_directory}/${library_target}" && -e "/usr/lib/${voice_multiarch}/${library_target}" ]]; then
ln -s "/usr/lib/${voice_multiarch}/${library_target}" "${voice_library_directory}/${library_target}"
fi
done
export PKG_CONFIG_PATH="${voice_library_directory}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
export PKG_CONFIG_SYSROOT_DIR="${voice_sysroot}"
fi
cd "${repo_root}/codex-rs"
cargo build -p codex-cli --bin codex
export CODEX_TEST_CURRENT_CODEX="${CARGO_TARGET_DIR:-${repo_root}/codex-rs/target}/debug/codex"
echo "Testing current Codex compatibility through authenticated Noise"
export CODEX_TEST_RELEASED_CODEX="${CODEX_TEST_CURRENT_CODEX}"
just test -p codex-exec-server --test relay version_skew --test-threads 1
tested_release_version=""
for release in "${releases[@]}"; do
release="${release#rust-v}"
if [[ "${release}" == "${tested_release_version}" ]]; then
echo "Skipping Codex ${release}; this release was already tested"
continue
fi
if [[ "${release}" == "latest" ]]; then
release_url="https://github.com/openai/codex/releases/latest/download/${asset}"
else
release_url="https://github.com/openai/codex/releases/download/rust-v${release}/${asset}"
fi
binary_directory="${release_directory}/${release}"
mkdir -p "${binary_directory}"
echo "Downloading released Codex from ${release_url}"
curl -fsSL "${release_url}" -o "${binary_directory}/${asset}"
tar -xzf "${binary_directory}/${asset}" -C "${binary_directory}"
export CODEX_TEST_RELEASED_CODEX="${binary_directory}/codex-${target}"
release_output="$("${CODEX_TEST_RELEASED_CODEX}" --version)"
echo "${release_output}"
tested_release_version="${release_output##* }"
just test -p codex-exec-server --test relay version_skew --test-threads 1
done
@@ -1,43 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
script_directory="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
script_path="${script_directory}/run_version_skew.sh"
fake_bin="$(mktemp -d "${TMPDIR:-/tmp}/codex-version-skew-test.XXXXXX")"
trap 'rm -rf "${fake_bin:?}"' EXIT
for tool in bash dirname mkdir mktemp rm sed; do
ln -s "$(command -v "${tool}")" "${fake_bin}/${tool}"
done
printf '%s\n' \
'#!/usr/bin/env bash' \
'case "${1:-}" in' \
' -s) printf "Linux\\n" ;;' \
' -m) printf "x86_64\\n" ;;' \
' *) exit 1 ;;' \
'esac' >"${fake_bin}/uname"
chmod +x "${fake_bin}/uname"
printf '%s\n' \
'#!/usr/bin/env bash' \
'exit 1' >"${fake_bin}/pkg-config"
chmod +x "${fake_bin}/pkg-config"
printf '%s\n' \
'#!/usr/bin/env bash' \
'printf "reached cargo\\n" >&2' \
'exit 97' >"${fake_bin}/cargo"
chmod +x "${fake_bin}/cargo"
set +e
output="$(PATH="${fake_bin}" "${script_path}" latest 2>&1)"
status=$?
set -e
if [[ "${status}" -ne 97 || "${output}" != *"reached cargo"* ]]; then
printf '%s\n' "expected non-Debian Linux without voice metadata to reach cargo" >&2
printf 'status: %s\n%s\n' "${status}" "${output}" >&2
exit 1
fi