Skip to content

CI & releases

Automated CI pipelines, manual workflow runs, and cross-platform release binaries via GitHub Actions.

The stepper repository uses GitHub Actions for continuous integration, manual workflow runs, and automated release distribution. Three workflows handle building, testing, and publishing binaries across platforms.

ci.yml — Build & test on push

Runs on every push and pull request to validate the codebase. The workflow executes the following quality gates:

  • build — compiles the workspace with cargo build --workspace
  • clippy -D warnings — runs clippy linter with treat-warnings-as-errors mode to enforce code quality
  • test — executes cargo test --workspace (live tests marked #[ignore] or gated by environment are skipped)
  • install — a smoke test that runs scripts/install.sh to verify the installation script works

run.yml — Manual headless execution

A manual workflow triggered via workflow_dispatch for on-demand test runs. The workflow builds and installs stepper, then runs it headless with user-provided inputs.

  • Accepts three workflow inputs: prompt (the headless prompt), model (the model ID to use), and mode (the permission mode)
  • Uses repo secrets named STEPPER_<PROVIDER>_API_KEY for provider authentication (e.g., STEPPER_ANTHROPIC_API_KEY)

release.yml — Cross-platform publishing

Triggered by a push to the prod branch or manual workflow dispatch. This workflow gates on passing quality checks, builds optimized release binaries, and publishes them to a GitHub Release.

Quality gates

  • build — compiles with cargo build --workspace
  • clippy -D warnings — enforces zero warnings
  • test — runs the full test suite

Release artifacts

The workflow builds and publishes binaries for three target platforms:

  • macOS arm64 (Apple Silicon)
  • Linux x86_64
  • Windows x86_64

For each target, the workflow publishes both versioned and version-less archives:

  • Versioned: stepper-<version>-<target>.tar.gz or .zip (includes version in name)
  • Version-less: stepper-<target>.tar.gz or .zip (stable URL for static hosting)

Archives are published to a GitHub Release tagged v<version>, where the version is read from the workspace version in Cargo.toml. Bump the version in Cargo.toml to cut a new release; re-pushing the same version updates the release assets.

Distribution

The repository is public, so end users download binaries directly from the latest GitHub release. The install scripts referenced in §1 (hosted on the separate stepper.gumyo.net site) pull from releases/latest/download to fetch the platform-specific archive, decompress it, and install the stepper binary into ~/.local/bin.