-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial External CICD
Run zyvor-qa as a QA gate inside your own project’s pipeline — no checkout of ZyAIQAAgent, no committed .env. Uses the published GHCR image and/or the reusable GitHub Action.
Deep docs: Tutorial 15 · action.yml · templates/ci/.
Want GitHub as a spec source (issues/docs → generate tests)? That is Tutorial: GitHub Integration.
jobs:
qa:
runs-on: ubuntu-latest # Docker Action = Linux only
steps:
- uses: hypersdk/ZyAIQAAgent@v0.4.0
id: qa
with:
command: test
target-url: https://staging.example.com
grep: '@smoke'
# For AI commands (run / create / flow --describe):
# openai-api-key: ${{ secrets.OPENAI_API_KEY }}
# fail-on-error: 'true' # default; set 'false' for report-only
- name: Publish QA artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: zyvor-qa-report
path: reports/
- name: Gate on failures
if: steps.qa.outputs.failed != '0'
run: exit 1Useful inputs: command, args, target-url, grep, shard, zyvor-env, target-allowlist, allow-private-targets, llm-provider, openai-api-key, anthropic-api-key, fail-on-error.
Outputs: exit-code, passed, failed, summary-path (from reports/summary.json).
Image under the hood: ghcr.io/hypersdk/zyaiqaagent:v0.4.0.
docker run --rm \
-e ZYVOR_BASE_URL=https://staging.example.com \
-v "$PWD/reports:/app/reports" \
ghcr.io/hypersdk/zyaiqaagent:v0.4.0 \
test --grep @smokeCopy-paste starters:
| CI | Template |
|---|---|
| GitLab CI | templates/ci/gitlab-ci.yml |
| CircleCI | templates/ci/circleci-config.yml |
| Jenkins | templates/ci/Jenkinsfile |
| Azure Pipelines | templates/ci/azure-pipelines.yml |
zyvor-qa only auto-loads the .env next to its installed package, never your product repo’s .env. In external CI, pass settings as env vars / secrets only.
| Commands | Exit 0 | Exit 1 | Exit 2 |
|---|---|---|---|
run, test, flow, api-test, ai-test, auth-test, har-replay, realtime
|
all passed | failures | — |
flow |
missing --describe and --steps
|
||
route-sweep |
no route over visual threshold | routes changed | — |
vitals |
all CWV “good” | below “good” | — |
{
"schema_version": 1,
"command": "test",
"target_url": "https://staging.example.com",
"passed": 18,
"failed": 0,
"status": "passed",
"exit_code": 0,
"artifacts": { "raw_json": "reports/results.json" }
}jq -r '.failed' reports/summary.jsonUpload reports/ (+ test-results/, screenshots/, traces/ if present) as CI artifacts.
| Variable | Purpose |
|---|---|
ZYVOR_BASE_URL |
URL under test |
ZYVOR_GREP / ZYVOR_SHARD
|
Filter / shard |
ZYVOR_ENV |
development (permissive) or production (allowlist) |
ZYVOR_TARGET_ALLOWLIST |
Hosts allowed in production mode |
ZYVOR_ALLOW_PRIVATE_TARGETS / ZYVOR_ALLOW_HTTP_TARGETS
|
Overrides |
OPENAI_API_KEY / ANTHROPIC_API_KEY / … |
Only for AI commands |
Private staging: start with ZYVOR_ENV=development, or set production + allowlist hostname.
| Symptom | Fix |
|---|---|
| Target rejected by policy | Allowlist host or use ZYVOR_ENV=development
|
| Playwright missing (non-container) | Prefer the GHCR image |
create / AI cmds fail immediately |
Provide LLM secret |
Committed .env ignored |
Expected — use CI secrets |
- Tutorial: GitHub Integration — specs from issues/PRs
- Tutorial: Agent CI & Kubernetes — agent repo workflows + k8s
- CI-CD hub · Configuration
Start: Home · Getting Started · Tutorials · Workflows · Admin · Dashboard
Tutorials: Spec→Test · NL · GitHub · Coverage · Visual · Notify · External CI · Agent CI · zyvor.dev · Specs
Build: Architecture · Config · Authoring · Structure · Multi-browser · Rust
Actions: Mission Control · Journeys · API/Auth · Probes · Schedules · Ask Zyvor · Autofix
Ship: API · Webhooks · Security · CI/CD · Deploy · Releases · Enterprise
More: Troubleshoot · FAQ · Glossary · Contributing · Demos · Docs
Guides