Connect CI
CI should run the same authored assets you run locally: contracts,
workflows, and raw test() checks committed to your verification project.
Use the same profile locally and in CI. Define a ci profile in glubean.yaml
once, then run it with one command everywhere. The point is simple: CI should
produce fresh evidence from the same source of truth, not a second hand-authored
workflow.
The ci profile
npx glubean init scaffolds a ci profile. It declares which committed suites
run, plus fail-fast, reporters, and optionally thresholds:
suites:
tests:
target: ./tests
kinds: [test]
contracts:
target: ./contracts
kinds: [contract, flow]
profiles:
ci:
suites: [tests, contracts]
selection:
excludeTags: [manual, destructive]
execution:
failFast: true
concurrency: 2
reporters:
junit: .glubean/results/junit.xml
resultJson: .glubean/results/ci.result.jsonRecommended command
npx glubean ci runnpx glubean ci run is shorthand for npx glubean run --profile ci. Suites,
fail-fast, and reporter paths all come from profiles.ci — nothing to
remember on the command line, and CI matches what you run locally with
npx glubean run --profile ci.
suites: [tests, contracts]keeps CI focused on stable authored assets: rawtest()checks plus executable contracts and workflows.reporters.resultJsongives you a stable machine-readable artifact.reporters.junitintegrates with common CI test dashboards.
Override a path ad-hoc when needed: npx glubean ci run --reporter junit:other.xml.
GitHub Actions example
name: test-api
on: [push, pull_request]
jobs:
glubean:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "22"
- run: npm ci
- run: npx glubean ci runWhen you are ready for uploads
Add --upload to send results to Glubean Cloud after each CI run. Uploaded CI
runs become Target evidence that developers, QA, product, support, and the
webapp Agent can inspect:
- name: Run and upload Glubean evidence
env:
GLUBEAN_TOKEN: ${{ secrets.GLUBEAN_TOKEN }}
run: npx glubean ci run --uploadThis requires a scoped token with runs:write. Keep the token in the CI secret
store as GLUBEAN_TOKEN; keep GLUBEAN_PROJECT_ID and, when needed,
GLUBEAN_TARGET_ID in the committed .env, or set upload.projectId /
upload.targetId on the ci profile. Setup is covered in Upload Your First Run.