CI integrations
The contract: flightbox ci exits nonzero if any run fails, prints the
scorecard, and writes JUnit XML any CI system can ingest.
flightbox ci --suite suite_abc123 --api https://app.flightbox.co \
--base-url "$PREVIEW_URL" --junit results.xml
GitHub Actions
on: [deployment_status]
jobs:
agents:
if: github.event.deployment_status.state == 'success'
runs-on: ubuntu-latest
steps:
- uses: xxco/flightbox@main
with:
suite: ${{ vars.FLIGHTBOX_SUITE }}
api-url: ${{ vars.FLIGHTBOX_URL }}
base-url: ${{ github.event.deployment_status.target_url }}
env:
FLIGHTBOX_API_KEY: ${{ secrets.FLIGHTBOX_API_KEY }}
GitLab CI
agent-matrix:
image: ghcr.io/astral-sh/uv:python3.12-bookworm
script:
- uvx --from git+https://github.com/xxco/flightbox flightbox ci
--suite $FLIGHTBOX_SUITE --api $FLIGHTBOX_URL
--base-url $CI_ENVIRONMENT_URL --junit results.xml
artifacts:
reports: { junit: results.xml }
Anything else (Jenkins, Circle, Buildkite): it's one shell command + one XML
file. Tier your cadence: smoke (1 agent × key task) on PRs, full matrix
nightly — budgets (max_usd) are enforced per run server-side.