CI and Releases
CI jobs
The GitHub CI workflow verifies:
lint:clippylint:formatverify:docsverify:securitytest:all(cargo test --all-features --locked)test:program-e2e(Example program tests, SBF builds, mollusk-svm integration tests, and BPF artifact verification)test:idl(regeneratecodama/idls,codama/clients/rust,codama/clients/js, validate outputs, and fail on any diff)cargo build --lockedcargo build --all-features --locked
This keeps code quality, behavior, and documentation build health aligned.
Coverage
The coverage workflow runs focused coverage with cargo llvm-cov and publishes an LCOV artifact:
- Command:
coverage:all - Artifact:
target/coverage/lcov.info - Optional upload: Codecov (
fail_ci_if_error: false)
Docs publishing
The docs-pages workflow publishes the mdBook to GitHub Pages:
- Trigger: pushes to
mainthat touch docs + GitHub Releasepublished - Build command:
docs:build(output indocs/book) - Deploy target: GitHub Pages (
https://pina-rs.github.io/pina/)
CLI asset releases
The assets workflow only publishes binaries for CLI tags:
- Required tag format:
pina_cli/v<version> - Tag/version check: release tag must match
crates/pina_cli/Cargo.toml - Build scope:
crates/pina_clionly (package = "pina_cli")
Release workflow
Use knope for changelog/release management:
knope document-change
knope release
knope publish
Keep changeset descriptions explicit and user-impact focused.