Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Build & package

When to read this: Produce release artifacts or run CI locally.

Goal

The same compile, test and lint path GitHub runs, executed on your machine; and, when you need them, the platform packages the release workflow builds.

Prerequisites

Steps

Local CI

make setup        # Linux deps + wasm32-wasip2 (once)
make wasm-modules # WASM plugins and fixtures for tests
make ci           # matches the Rust path of GitHub Actions

make ci runs cargo test --all-features, cargo fmt --check, cargo clippy --all-features -- -D warnings, and the reserved-symbol and rig-pin scripts. GitHub skips that compile path when a PR only changes docs; use make docs and make docs-check for documentation-only work. Every target is listed in Make targets & CI workflows; which tests to run for a smaller change is in Test.

Platform packages

PlatformScript
macOS./scripts/package-macos.sh (.app bundle and .dmg)
Linux./scripts/package-linux.sh (.tar.gz)

Release builds write a separate target/release/ tree; only build one locally when you are packaging.

Cutting a release

Version bumps, changelog generation, tagging and the cross-platform release build are driven by labels on the PR and the Prepare Release workflow. See the Release process.

Docs site

make docs-gen
make docs
make docs-serve

Verify

make ci exits 0; a package script leaves its artifact in the location it prints.

Common mistakes

MistakeFix
Running cargo test without --all-features and calling it CIFeature-gated tools never compiled; use make test
Adding a release label after mergingLabels are read from the merged PR; see Release process