Docs / CI

GitHub Actions integration

Run governed Agentic scenarios on every pull request. The action dispatches your chosen scenarios, polls until they finish, and fails the build on regressions.

1

Add secrets to your repo

In your GitHub repository settings → Secrets and variables → Actions, add:

  • ASSERTIVE_PROJECT_ID — your Assertive project UUID
  • ASSERTIVE_CI_HMAC_SECRET — a shared random string (also saved in your Assertive backend)
  • ASSERTIVE_SCENARIO_IDS — comma-separated scenario UUIDs (a repo variable is fine)

Generate the HMAC secret with openssl rand -hex 32 and paste the same value in both places.

2

Drop in the workflow

Save this as .github/workflows/assertive.yml:

yaml
name: Assertive QA
on:
  pull_request:
  workflow_dispatch:

jobs:
  qa:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Assertive scenarios
        uses: vancoregroup/assertive-action@v1
        with:
          endpoint: https://assertive.tech
          project_id: ${{ secrets.ASSERTIVE_PROJECT_ID }}
          scenario_ids: ${{ vars.ASSERTIVE_SCENARIO_IDS }}
          hmac_secret: ${{ secrets.ASSERTIVE_CI_HMAC_SECRET }}
          poll_timeout_seconds: "900"
3

Dispatch manually with curl

The endpoint is HMAC-signed. Reject responses that come back with 401 — the signature or secret is off.

bash
BODY='{"project_id":"<uuid>","scenario_ids":["<uuid>"],"triggered_by":"manual"}'
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$ASSERTIVE_CI_HMAC_SECRET" | awk '{print $2}')

curl -X POST https://assertive.tech/api/public/hooks/ci-dispatch \
  -H "Content-Type: application/json" \
  -H "x-assertive-signature: $SIG" \
  --data "$BODY"
4

Poll for status

The dispatch response returns { run_refs: [...] }. Poll each ref:

bash
curl https://assertive.tech/api/public/runs/RUN-000042/status
# → { "run_ref": "RUN-000042", "status": "running", ... }

Terminal statuses: passed, failed, cancelled.

Need a public share link for the run?

Toggle any run public and share /r/RUN-XXXXXX. See Pricing for parallel execution and SSO.