Skip to content

ci: checks fetch their own pinned, sha-verified tools (nextest, deny, jq) - #1035

Merged
MattJackson merged 5 commits into
predevfrom
lane-ci-own-tools
Oct 14, 2026
Merged

MattJackson merged 5 commits into
predevfrom
lane-ci-own-tools

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

Owner ruling (relayed by ModernCI): the tenant owns its CI config and toolchain. ModernCI removed cargo-nextest and cargo-deny from its EC2 backend (Latchkey next), so the checks fetch them.

… jq)

Owner ruling (relayed by ModernCI, 2026-10-14): the tenant owns its CI config
and toolchain; ModernCI runs what the YAML says. ModernCI stopped providing
cargo-nextest and cargo-deny on its EC2 backend (Latchkey follows), so each
check now fetches what it uses.

.ci/tool.sh (POSIX sh, sourced: `. .ci/tool.sh nextest deny jq`) puts each tool
at its pinned version on PATH: a tool already on PATH at exactly the pin is
used; else the official release asset is downloaded with curl, verified against
the sha256 pinned in the script, and cached under
${MODERNCI_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}}/busbar-ci-tools/<tool>-<version>/.
Unsupported platform or sha mismatch prints a message and returns 1.
Platforms: linux x86_64, linux aarch64, darwin arm64.

.ci/default.yaml: test and test-gated source it for nextest and jq; deny sources
it for deny and drops `requires: [cargo-deny]`. Check bodies are otherwise
unchanged; `requires: [git-history]` is kept.

Pins (sha256):
cargo-nextest 0.9.148
  x86_64-unknown-linux-gnu   223ba936714cc861a9cdedad5a8eb664dfdd69d6fbdf6cea6aa8184f523290dc
  aarch64-unknown-linux-gnu  81469eb963ef883fd590e60189e77d6aba3d91b418591d3391f50fe3e9480d2b
  universal-apple-darwin     6c23b7fb4ca82c571fc8dfedbab45bfa773d45918f933170c85d21cd7f4b852b
cargo-deny 0.20.2
  x86_64-unknown-linux-musl  9f12ed4c49936e09b48bf862b595cde2fe64fcbd9d74dfacac6131ca824c8d5f
  aarch64-unknown-linux-musl 995c82be0defc7a025cae49a2aa2644ce8245c9a3318fc4103907c6a285e8c7d
  aarch64-apple-darwin       fe67d82a10d8597a3549364cb733a3f9cc1bfff9031b7ae46384a9f2a72090c3
jq 1.7.1
  jq-linux-amd64             5942c9b0934e510ee61eb3e30273f1b3fe2590df93933a93d7c58b81d19c8ff5
  jq-linux-arm64             4dd2d8a0661df0b22f1bb9a1f9830f06b6f3b8f7d91211a1ef5d7c4f06a8b4a5
  jq-macos-arm64             0bbe619e663e0de2c550be2fe0d240d076799d6f8a652b70fa04aea8a8362e8a
… drops XDG

ModernCI guarantees only Linux, sh, git, curl, tar and CA certs. `. .ci/tool.sh rust`
leaves an existing cargo alone; otherwise it fetches rustup-init 1.28.2 from
static.rust-lang.org, verifies the pinned sha256 (cross-checked against the published
.sha256), runs it with --default-toolchain none and RUSTUP_HOME/CARGO_HOME under the
cache root, and prepends $CARGO_HOME/bin (rust-toolchain.toml picks the toolchain).

Every cargo-running check in .ci/default.yaml (preflight, gates, clippy, compile, test,
test-gated, doctest, deletion-matrix, deny, oracle) now starts with `. .ci/tool.sh rust ...`.
Cache root is ${MODERNCI_CACHE_DIR:-$HOME/.cache}/busbar-ci-tools.

rustup-init 1.28.2 sha256:
  x86_64-unknown-linux-gnu   20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c
  aarch64-unknown-linux-gnu  e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c
  aarch64-apple-darwin       20ef5516c31b1ac2290084199ba77dbbcaa1406c45c1d978ca68558ef5964ef5
…er bootstrapping rustup

rustup 1.28.0 removed the implicit install of the rust-toolchain.toml channel. When
rustup is the one tool.sh bootstrapped, it now runs `rustup toolchain install` from the
repo root (installs the toolchain and components the file names; a no-op once present).
An existing cargo on PATH is left untouched.
MattJackson added a commit that referenced this pull request Oct 14, 2026
… tenant owns toolchain; operator removed Rust on v0.4.1448). Each cargo check sources .ci/tool.sh when present (#1035) else the inline BUSBAR_TOOL_SH (pinned, sha-verified rustup-init 1.28.2 + rustup toolchain install, nextest 0.9.148, deny 0.20.2, jq 1.7.1). Also re-syncs with predev's file (#924 example cdylib builds; git-history on gates).
MattJackson added a commit that referenced this pull request Oct 14, 2026
…tenant owns toolchain; operator removed Rust on v0.4.1448). Each cargo check sources .ci/tool.sh when present (#1035) else the inline BUSBAR_TOOL_SH (pinned, sha-verified rustup-init 1.28.2 + rustup toolchain install, nextest 0.9.148, deny 0.20.2, jq 1.7.1). Also re-syncs with predev's file (#924 example cdylib builds; git-history on gates).
@MattJackson
MattJackson merged commit 2bce54d into predev Oct 14, 2026
1 check passed
@MattJackson
MattJackson deleted the lane-ci-own-tools branch October 14, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant