bruno-ci-setup
Bruno CI Setup
Purpose
Create CI workflows that run Bruno collections reliably, generate useful reports, and keep secrets out of logs and committed files. Bruno ships two official, maintained runtimes — an official GitHub Action and an official Docker image — plus the underlying npm-installed CLI. Picking the right one for the user's CI system is the first and most consequential decision; the rest of the setup (bru run flags, reports, secrets) is shared across all three.
Runtime selection
Choose the runtime in this order. The reason for the order is that each option lower on the list trades away a maintained convenience for more manual setup, so only drop down when the higher option genuinely doesn't fit.
-
GitHub Actions → the official Bruno GitHub Action (
usebruno/bruno-cli-action). If the CI system is GitHub Actions, prefer the Action. It is a thin pass-through that installs the CLI, runs yourbrucommand, and exposes machine-readable counts the rest of the pipeline can branch on — less YAML than hand-installing Node and the CLI, and no version drift to maintain. -
Any other CI system → the official Bruno Docker image (
usebruno/cli). For GitLab CI, Jenkins, Azure Pipelines, Bitbucket, Kubernetes jobs, or a local pre-push hook, prefer the Docker image.bruis baked in on top of Node, so there is no Node/npm to install on the host, and you get byte-for-byte identical runs locally and in the pipeline. This is the recommended primitive everywhere outside GitHub Actions. -
Fallback → the npm-installed CLI (
npm install -g @usebruno/cli). Use this only when neither of the above fits — for example a self-hosted runner that already has a pinned Node toolchain and cannot or should not run containers, an air-gapped environment mirroring npm but not a container registry, or a user who explicitly wants a bare CLI install. It works anywhere Node runs but you own the Node setup, the CLI version pinning, and the report wiring yourself.
When the situation is ambiguous (e.g. "set up CI" with no platform named), ask which CI system they use before generating config, since the answer determines the runtime.