mirror of
https://github.com/openai/codex.git
synced 2026-04-24 06:35:50 +00:00
## Summary - Pin Rust git patch dependencies to immutable revisions and make cargo-deny reject unknown git and registry sources unless explicitly allowlisted. - Add checked-in SHA-256 coverage for the current rusty_v8 release assets, wire those hashes into Bazel, and verify CI override downloads before use. - Add rusty_v8 MODULE.bazel update/check tooling plus a Bazel CI guard so future V8 bumps cannot drift from the checked-in checksum manifest. - Pin release/lint cargo installs and all external GitHub Actions refs to immutable inputs. ## Future V8 bump flow Run these after updating the resolved `v8` crate version and checksum manifest: ```bash python3 .github/scripts/rusty_v8_bazel.py update-module-bazel python3 .github/scripts/rusty_v8_bazel.py check-module-bazel ``` The update command rewrites the matching `rusty_v8_<crate_version>` `http_file` SHA-256 values in `MODULE.bazel` from `third_party/v8/rusty_v8_<crate_version>.sha256`. The check command is also wired into Bazel CI to block drift. ## Notes - This intentionally excludes RustSec dependency upgrades and bubblewrap-related changes per request. - The branch was rebased onto the latest origin/main before opening the PR. ## Validation - cargo fetch --locked - cargo deny check advisories - cargo deny check - cargo deny check sources - python3 .github/scripts/rusty_v8_bazel.py check-module-bazel - python3 .github/scripts/rusty_v8_bazel.py update-module-bazel - python3 -m unittest discover -s .github/scripts -p 'test_rusty_v8_bazel.py' - python3 -m py_compile .github/scripts/rusty_v8_bazel.py .github/scripts/rusty_v8_module_bazel.py .github/scripts/test_rusty_v8_bazel.py - repo-wide GitHub Actions `uses:` audit: all external action refs are pinned to 40-character SHAs - yq eval on touched workflows and local actions - git diff --check - just bazel-lock-check ## Hash verification - Confirmed `MODULE.bazel` hashes match `third_party/v8/rusty_v8_146_4_0.sha256`. - Confirmed GitHub release asset digests for denoland/rusty_v8 `v146.4.0` and openai/codex `rusty-v8-v146.4.0` match the checked-in hashes. - Streamed and SHA-256 hashed all 10 `MODULE.bazel` rusty_v8 asset URLs locally; every downloaded byte stream matched both `MODULE.bazel` and the checked-in manifest. ## Pin verification - Confirmed signing-action pins match the peeled commits for their tag comments: `sigstore/cosign-installer@v3.7.0`, `azure/login@v2`, and `azure/trusted-signing-action@v0`. - Pinned the remaining tag-based action refs in Bazel CI/setup: `actions/setup-node@v6`, `facebook/install-dotslash@v2`, `bazelbuild/setup-bazelisk@v3`, and `actions/cache/restore@v5`. - Normalized all `bazelbuild/setup-bazelisk@v3` refs to the peeled commit behind the annotated tag. - Audited Cargo git dependencies: every manifest git dependency uses `rev` only, every `Cargo.lock` git source has `?rev=<sha>#<same-sha>`, and `cargo deny check sources` passes with `required-git-spec = "rev"`. - Shallow-fetched each distinct git dependency repo at its pinned SHA and verified Git reports each object as a commit.
107 lines
4.2 KiB
YAML
107 lines
4.2 KiB
YAML
name: rust-release-argument-comment-lint
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
publish:
|
|
required: true
|
|
type: boolean
|
|
|
|
jobs:
|
|
skip:
|
|
if: ${{ !inputs.publish }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: echo "Skipping argument-comment-lint release assets for prerelease tag"
|
|
|
|
build:
|
|
if: ${{ inputs.publish }}
|
|
name: Build - ${{ matrix.runner }} - ${{ matrix.target }}
|
|
runs-on: ${{ matrix.runs_on || matrix.runner }}
|
|
timeout-minutes: 60
|
|
env:
|
|
CARGO_DYLINT_VERSION: 5.0.0
|
|
DYLINT_LINK_VERSION: 5.0.0
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: macos-15-xlarge
|
|
target: aarch64-apple-darwin
|
|
archive_name: argument-comment-lint-aarch64-apple-darwin.tar.gz
|
|
lib_name: libargument_comment_lint@nightly-2025-09-18-aarch64-apple-darwin.dylib
|
|
runner_binary: argument-comment-lint
|
|
cargo_dylint_binary: cargo-dylint
|
|
- runner: ubuntu-24.04
|
|
target: x86_64-unknown-linux-gnu
|
|
archive_name: argument-comment-lint-x86_64-unknown-linux-gnu.tar.gz
|
|
lib_name: libargument_comment_lint@nightly-2025-09-18-x86_64-unknown-linux-gnu.so
|
|
runner_binary: argument-comment-lint
|
|
cargo_dylint_binary: cargo-dylint
|
|
- runner: ubuntu-24.04-arm
|
|
target: aarch64-unknown-linux-gnu
|
|
archive_name: argument-comment-lint-aarch64-unknown-linux-gnu.tar.gz
|
|
lib_name: libargument_comment_lint@nightly-2025-09-18-aarch64-unknown-linux-gnu.so
|
|
runner_binary: argument-comment-lint
|
|
cargo_dylint_binary: cargo-dylint
|
|
- runner: windows-x64
|
|
target: x86_64-pc-windows-msvc
|
|
archive_name: argument-comment-lint-x86_64-pc-windows-msvc.zip
|
|
lib_name: argument_comment_lint@nightly-2025-09-18-x86_64-pc-windows-msvc.dll
|
|
runner_binary: argument-comment-lint.exe
|
|
cargo_dylint_binary: cargo-dylint.exe
|
|
runs_on:
|
|
group: codex-runners
|
|
labels: codex-windows-x64
|
|
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
|
|
- uses: dtolnay/rust-toolchain@a0b273b48ed29de4470960879e8381ff45632f26 # 1.93.0
|
|
with:
|
|
toolchain: nightly-2025-09-18
|
|
targets: ${{ matrix.target }}
|
|
components: llvm-tools-preview, rustc-dev, rust-src
|
|
|
|
- name: Install tooling
|
|
shell: bash
|
|
run: |
|
|
install_root="${RUNNER_TEMP}/argument-comment-lint-tools"
|
|
cargo install --locked cargo-dylint --version "$CARGO_DYLINT_VERSION" --root "$install_root"
|
|
cargo install --locked dylint-link --version "$DYLINT_LINK_VERSION"
|
|
echo "INSTALL_ROOT=$install_root" >> "$GITHUB_ENV"
|
|
|
|
- name: Cargo build
|
|
working-directory: tools/argument-comment-lint
|
|
shell: bash
|
|
run: cargo build --release --target ${{ matrix.target }}
|
|
|
|
- name: Stage artifact
|
|
shell: bash
|
|
run: |
|
|
dest="dist/argument-comment-lint/${{ matrix.target }}"
|
|
mkdir -p "$dest"
|
|
package_root="${RUNNER_TEMP}/argument-comment-lint"
|
|
rm -rf "$package_root"
|
|
mkdir -p "$package_root/bin" "$package_root/lib"
|
|
|
|
cp "tools/argument-comment-lint/target/${{ matrix.target }}/release/${{ matrix.runner_binary }}" \
|
|
"$package_root/bin/${{ matrix.runner_binary }}"
|
|
cp "${INSTALL_ROOT}/bin/${{ matrix.cargo_dylint_binary }}" \
|
|
"$package_root/bin/${{ matrix.cargo_dylint_binary }}"
|
|
cp "tools/argument-comment-lint/target/${{ matrix.target }}/release/${{ matrix.lib_name }}" \
|
|
"$package_root/lib/${{ matrix.lib_name }}"
|
|
|
|
archive_path="$dest/${{ matrix.archive_name }}"
|
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
|
(cd "${RUNNER_TEMP}" && 7z a "$GITHUB_WORKSPACE/$archive_path" argument-comment-lint >/dev/null)
|
|
else
|
|
(cd "${RUNNER_TEMP}" && tar -czf "$GITHUB_WORKSPACE/$archive_path" argument-comment-lint)
|
|
fi
|
|
|
|
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
|
with:
|
|
name: argument-comment-lint-${{ matrix.target }}
|
|
path: dist/argument-comment-lint/${{ matrix.target }}/*
|