Tutorial: your first bupha run
Goal: push-triggered CI on a repo, end to end, in ~10 minutes.
Prereqs: Linux + systemd (shell runner needs bash; macOS/Windows unsupported for now); git; cargo install bupha (until 0.1.0 lands on crates.io: cargo install --git https://github.com/9aia/bupha); docker only if you use the dagger runner. Also a stable public URL for the webhook — named cloudflared tunnel or a direct box; quick tunnels are convenient but flaky.
cd your-repo && bupha init— scaffolds the dagger module + delegate (the module builds a Rust workspace — needscargoin the pipeline image; for anything else writeci.shand use the shell runner).bupha deploy env→ setBUPHA_WEBHOOK_SECRET+BUPHA_TOKEN(a repo-scoped PAT) — in~/.config/bupha/env, or store them in your OS keyring withsecret-tool(resolution: env → keyring → file).- Write
bupha.toml(seeexamples/bupha.toml.example): your repo's[[repo]]entry,runner.kind,tunnel. bupha doctor— checks this box (binaries, secrets, config) before you commit; fix anything red.bupha deploy service— systemd unit written + enabled (loginctl enable-lingeronce for boot persistence).bupha deploy webhook— registersPOST <public_url>/hookon the repo;bupha deploy checkverifies unit+secrets+endpoint.- Push.
ci/buphacommit status appears; superseded/cancelled shas get honest error statuses.
Done. Logs: journalctl --user -u bupha-watch -f.