Skip to content

Quickstart: Rust

This guide gets a Rust repo running under podCI.

podCI ships:

  • init templates (on disk; used by podci init)
  • template images (Containerfiles embedded in the binary; built locally on first use)

Prerequisites

  • rootless Podman installed and working (podman info succeeds)
  • podci installed (from a package or from source)

Verify templates are available:

podci templates list

Existing repo: add podci.toml

podci init requires an empty destination directory. For an existing repo, generate into a temp directory and copy only the config:

tmpdir="$(mktemp -d)"
podci init --template rust-musl --dir "$tmpdir"
cp "$tmpdir/podci.toml" ./podci.toml
rm -rf "$tmpdir"

Edit podci.toml and set:

  • project = "your-repo-name"

Commit the config.

If you need a glibc/gnu toolchain (e.g. for system integration constraints), replace rust-musl with rust-glibc in the init command above.

Run a job

podci run --job default

On first use, podCI will build a local template image (e.g. rust-debian) from embedded Containerfiles.

Typical additions

Add a supply-chain gate

[jobs.default]
step_order = ["fmt", "clippy", "deny", "test"]

[jobs.default.steps.deny]
run = ["cargo", "deny", "check"]

Locked tests for release posture

[jobs.release]
profile = "dev"
step_order = ["test"]

[jobs.release.steps.test]
run = ["cargo", "test", "--workspace", "--locked"]

Outputs

Every run writes:

  • a manifest (Operations → Manifests)
  • per-step stdout/stderr under ~/.local/state/podci/runs/<run_id>/logs/

If you need structured output for CI, consume the manifest.