Skip to content

Releasing

The canonical release version lives in the workspace root Cargo.toml under [workspace.package].version. Everything else derives from that source through ./scripts/release-version.sh.

Useful commands:

Terminal window
./scripts/release-version.sh print
./scripts/release-version.sh sync
./scripts/release-version.sh check
./scripts/release-version.sh set <version>

  1. Run the quality gate.
Terminal window
cargo test
cargo clippy -- -D warnings
  1. Bump and sync versions.
Terminal window
./scripts/release-version.sh set <version>
./scripts/release-version.sh check
  1. Commit and tag.
Terminal window
git commit -am "release: <version>"
git tag v<version>
git push origin main
git push origin v<version>
  1. Monitor workflows:
  • release-binaries.yml
  • release-rust.yml
  • release-node.yml
  • release-python.yml
  • release-npm-cli.yml
  • release-pypi-cli.yml
  • release-docker.yml
  • release-homebrew-tap.yml

Dependent crates cannot be published safely until crates.io has indexed the previously published crate version. This repository keeps that protection in place.

The current release workflow no longer relies on blind sleep 30 delays alone. It keeps an intentional propagation delay, probes the specific crate version with bounded network timeouts, then keeps a short stabilization buffer before moving to the next dependent crate. If crates.io is slow, bounded publish retries take over instead of letting the workflow hang forever.


Run these after a release:

Terminal window
cargo search edgecrab-cli --limit 1
npm view edgecrab-cli version
python -m pip index versions edgecrab-cli
docker run --rm --entrypoint /bin/sh ghcr.io/raphaelmansuy/edgecrab:latest -lc 'which edgecrab && edgecrab --version'

Then test fresh installs:

Terminal window
npm install -g edgecrab-cli
which edgecrab
edgecrab --version
python -m pip install --upgrade edgecrab-cli
which edgecrab
edgecrab --version
cargo install edgecrab-cli --locked --force
which edgecrab
edgecrab --version

Also verify the docs site and Homebrew tap:

Terminal window
curl -I https://www.edgecrab.com
brew info raphaelmansuy/tap/edgecrab

The Homebrew formula lives in the external repository raphaelmansuy/homebrew-tap. This repository now includes:

  • scripts/update-homebrew-formula.sh
  • .github/workflows/release-homebrew-tap.yml

The workflow downloads edgecrab-checksums.txt from the GitHub Release, updates Formula/edgecrab.rb, and pushes the tap update with HOMEBREW_TAP_PUSH_TOKEN.

If the tap is behind, Homebrew users will keep seeing the old version even when npm, PyPI, crates.io, and Docker are already current.


The site has historically drifted when hard-coded version claims aged out. Prefer source-derived facts or generic wording for:

  • release version
  • provider count
  • tool count
  • gateway count
  • install-channel claims

Before merging a release-related docs change:

Terminal window
cd site
pnpm install
pnpm build

Make sure https://www.edgecrab.com is updated after the deploy workflow completes.