Skip to main content

CI/CD recipes

For GitHub-hosted repos, the GitHub App is the primary integration — install it once and every PR automatically gets a Roboticks Check Run. The CLI is the fallback (or the secondary surface for advanced workflows like running synthetic tests on a schedule). For non-GitHub CI systems, the CLI is the primary surface. The recipes below are the minimum working YAML/Groovy for each platform.

GitHub Actions

For most users, the GitHub App is enough — no workflow YAML required. See GitHub App → Installation. Use the CLI in a workflow when you need to:
  • Run on a schedule (synthetic tests)
  • Push tests for an air-gapped runner pool (see Air-gapped mode)
  • Trigger evidence-pack generation from a release workflow

GitLab CI

GitLab CI integration is supported via the CLI. A native GitLab App equivalent to the GitHub App is on the post-MVP roadmap.

Jenkins

CircleCI

BuildKite

Common patterns

Fail the build on test failure

Default behaviour. rbtk test run --wait exits non-zero (code 7) if any test fails. No extra wiring needed.

Don’t wait — fire and forget

Annotate the run with build metadata

Labels are searchable in rbtk test list --label ... and surface in the dashboard’s run-history view.

Conditional release evidence

BYO ingest

If you run your own CI (your own test framework, your own container, your own runner) you can post results straight to the platform without going through a hosted or self-hosted Roboticks runner. This is the BYO ingest path. It is free on every tier — no BYO connector slot is consumed. The wire format is JUnit-with-confirms. Generate it from any pytest/colcon/launch_testing/gtest run (the SDK does this automatically), or hand-author the <property name="roboticks.confirms" ...> element if you’re plumbing a non-Roboticks test framework.
rbtk test ingest uploads the JUnit to the per-project endpoint, parses out roboticks.confirms / roboticks.nodeid / roboticks.attach.* properties, and creates a sealed TestRun whose status reflects the JUnit outcome. Plan gate is the standard test_runs:write scope; there is no token or storage burn beyond the hot-storage already accounted for by the org’s plan. What is not free:
  • The vendor-specific catalog connectors (Jama, Polarion, codeBeamer, DOORS, LDRA, Polyspace, Coverity) at $149/connector/month — see BYO connectors.
  • AI features the ingest results feed into (triage, flakiness, sim-vs-real) — those bill in ai_tokens.

Secret hygiene

Never echo ROBOTICKS_API_KEY in build logs. Use platform-native masking; mark the variable as protected/masked at minimum.

Troubleshooting

Set ROBOTICKS_CI=true or run with --quiet. The CLI auto-detects non-TTY but some CI runners present a fake TTY.
The workflow’s sub claim isn’t in the policy at Settings → GitHub OIDC. Add the ref/environment, or tighten the workflow’s run conditions.
Make sure the test run completed before you ask for the pack. rbtk test run --wait (the default) blocks until completion; without --wait, you need to poll rbtk test results <id> until the status is terminal.

Next

GitHub App

The primary GitHub integration.

Test commands

Full reference for rbtk test.