Release Checklist
This checklist defines the public release bar for alpaca-rust.
Current Release Baseline
- The current published release line is
v0.24.3 - The next minimal patch release should be
v0.24.4 .github/workflows/github-pages.ymlis the only release workflow- The release workflow triggers only on semantic version tags matching
v*.*.* - crates.io Trusted Publishing must remain configured for
alpaca-core,alpaca-rest-http,alpaca-data,alpaca-trade, andalpaca-mock - The
github-pagesenvironment must allow deployments frommasterand tags matchingv*.*.*
Public Surface
- Root
README.mdreflects the current workspace shape - Each published crate has its own
README.md Cargo.tomlmetadata is present for every published crate- docs.rs is the primary API-reference host
- GitHub Pages hosts narrative docs for the whole workspace
CHANGELOG.mdcontains a non-empty section for the release tag- author metadata uses
Weiming Zhai (wmzhai@gmail.com)
Verification
Run before a release:
cargo fmt --check
cargo check --workspace
cargo test --doc
cargo doc --workspace --no-deps
npm run build --prefix website
cargo package --list -p alpaca-core
cargo package --list -p alpaca-rest-http
cargo package --list -p alpaca-data
cargo package --list -p alpaca-trade
cargo package --list -p alpaca-mock
cargo publish --dry-run -p alpaca-core
cargo publish --dry-run -p alpaca-rest-http
cargo publish --dry-run -p alpaca-data
cargo publish --dry-run -p alpaca-trade
cargo publish --dry-run -p alpaca-mock
Before the first real release, downstream cargo publish --dry-run commands are expected to require previously published workspace dependencies on crates.io.
Minimal Patch Release Flow
Use this flow for the next patch release, for example v0.24.4.
-
Update the release metadata on
master- bump
[workspace.package].versioninCargo.toml - bump all in-workspace dependency version pins in crate
Cargo.tomlfiles - bump the website package version in
website/package.json - update versioned install snippets in
docs/getting-started.mdanddocs/installation.md - add a non-empty
## v0.24.4section toCHANGELOG.md - regenerate docs metadata with
python3 tools/docs/generate-doc-site
- bump
-
Run the local preflight
cargo fmt --check
cargo check --workspace
cargo test --doc
cargo doc --workspace --no-deps
npm ci --prefix website
python3 tools/docs/generate-doc-site
npm run build --prefix website
- Commit and push
master
git add Cargo.toml crates docs website CHANGELOG.md .github/workflows/github-pages.yml
git commit -m "chore: prepare v0.24.4 release (v0.24.4)"
git push origin master
- Create and push the tag
git tag v0.24.4
git push origin v0.24.4
- Watch the release workflow
gh run list --workflow github-pages.yml --limit 5
gh run watch <run-id> --interval 10 --exit-status
- Verify the published artifacts
gh release view v0.24.4 --json name,tagName,url --jq '.'
curl -fsS https://crates.io/api/v1/crates/alpaca-core/0.24.4 >/dev/null
curl -fsS https://crates.io/api/v1/crates/alpaca-rest-http/0.24.4 >/dev/null
curl -fsS https://crates.io/api/v1/crates/alpaca-data/0.24.4 >/dev/null
curl -fsS https://crates.io/api/v1/crates/alpaca-trade/0.24.4 >/dev/null
curl -fsS https://crates.io/api/v1/crates/alpaca-mock/0.24.4 >/dev/null
curl -I -L https://wmzhai.github.io/alpaca-rust/
Live Verification
Run the release-confidence live suite appropriate for the current market state:
cargo test -p alpaca-data --tests -- --nocapturecargo test -p alpaca-trade --test mainline_api -- --nocapturecargo test -p alpaca-trade --test orders_mock_contract -- --nocapturecargo test -p alpaca-trade --test positions_mock_contract -- --nocapturecargo test -p alpaca-mock -- --nocapture
Publishing Order
Publish in dependency order:
alpaca-corealpaca-rest-httpalpaca-dataalpaca-tradealpaca-mock
Wait for crates.io index visibility before publishing each dependent crate.
GitHub Automation
- Release automation is tag-only and runs from
.github/workflows/github-pages.yml - crates.io publication uses Trusted Publishing from GitHub Actions
- GitHub Pages deploys from the same tag workflow
- GitHub Release creation runs from the same tag workflow
Failure Recovery
- If the workflow fails before any crate is uploaded, fix the issue on
master, bump to the next patch version, and tag that new version - If the workflow already published some crates for a version, rerun the same workflow after fixing external configuration; the publish step skips versions that already exist on crates.io
- If the workflow file itself is broken on the tagged commit, do not reuse that tag; fix
master, bump to the next patch version, and tag again - If GitHub Pages deployment is blocked by environment rules, fix the
github-pagesenvironment and rerun the same workflow - If the GitHub Release step fails after crates and Pages already succeeded, create or edit the GitHub Release for the same tag instead of republishing crates