Repository navigation
ci(bindings): pin the Stellar CLI version - #552
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pin the Stellar CLI used by the bindings check workflow to 22.8.2, the latest stable 22.x release that still supports this repository's Soroban contract SDK. The install stays reproducible with
--locked, and the job printsstellar --versionbeforepnpm bindings:check.Problem
.github/workflows/bindings-check.ymlinstalled the CLI withcargo install stellar-cli --lockedand no version. Cargo then selects whatever release is newest on crates.io at job time. The current newest stable CLI is 28.1.0. That line depends onsoroban-sdk23 or newer, while this repo's workspace pinssoroban-sdk = "22"andCargo.lockresolves 22.0.11.An unpinned install can change the compiler, the contract spec tools, and the TypeScript binding generator between runs.
pnpm bindings:checkdiffs generated bindings againstpackages/round-bindings/src/index.ts. A newer CLI can fail that diff, or worse, regenerate bindings that no longer match the SDK 22 contract, without any review of the CLI upgrade.--lockedalone does not pin the package version; it only respects the lockfile of whichever version Cargo chooses.Solution
The workflow now installs a reviewed version:
22.8.2 was published on crates.io on 2025-07-09 and is not yanked. It is the newest
stellar-cli22 release.soroban-cli22.8.2 depends onsoroban-sdk22.0.4,soroban-spec22.0.4, andsoroban-spec-tools^22.8.2. The next stable line,stellar-cli23.0.0, depends onsoroban-sdk^23, so it does not support this contract. No CLI version was already named in this repo (Cargo.toml, docs, orrust-toolchain.tomlonly saystableandsoroban-sdk = "22"), so the pin is the latest stable CLI that matches that SDK.stellar --versionruns in its own step immediately after the install and beforepnpm bindings:check, so the job log records the binary that generated the bindings. The rest of the workflow is unchanged: Rust stable withwasm32v1-none, the contract cache, system packages, pnpm 10.13.1, Node 22, and the frozen lockfile install.The pin is documented in
docs/CI.mdunder "Bindings check", including the install command and why 23+ is out of range.Acceptance
scripts/check-bindings-cli.test.mjsreads the workflow and docs. It requirescargo install stellar-cli --version 22.8.2 --locked, requiresstellar --versionto appear beforepnpm bindings:check, and requiresdocs/CI.mdto name that version and the same install command. The bindings workflow runs this test on checkout, before the CLI install.docs/CI.md.Tests
Result: 3 passed, 0 failed.
--lockedstellar --versionbeforepnpm bindings:checkCloses #510