CI integration
argos run exits non-zero on any failing request or test, so the CI step
naturally gates the pipeline. Reporters surface failures inline in the
CI provider’s test panel.
GitHub Actions
name: argos
on: push: branches: [main] pull_request: branches: [main]
jobs: run: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4
- name: Install argos run: | curl -fsSL \ "https://github.com/argos-app/argos/releases/latest/download/argos-x86_64-linux.tar.gz" \ | tar -xz chmod +x ./argos
- name: Run collection id: argos run: | ./argos run ./argos-workspace/collections \ --env ci \ --reporter junit=argos-report.xml \ --reporter json=argos-report.json continue-on-error: true
- name: Publish JUnit report if: always() uses: dorny/test-reporter@v1 with: name: argos path: argos-report.xml reporter: java-junit fail-on-error: true
- name: Upload raw reports if: always() uses: actions/upload-artifact@v4 with: name: argos-reports path: | argos-report.xml argos-report.json
- name: Fail the job if any request / test failed if: steps.argos.outcome == 'failure' run: exit 1The dorny/test-reporter step turns each <failure> in the JUnit XML
into an inline annotation on the Checks tab — failing requests link to
the diff line that introduced them.
GitLab CI
stages: [test]
argos: stage: test image: ubuntu:24.04 before_script: - apt-get update -qq && apt-get install -yqq --no-install-recommends curl ca-certificates - curl -fsSL "https://github.com/argos-app/argos/releases/latest/download/argos-x86_64-linux.tar.gz" | tar -xz - chmod +x ./argos script: - ./argos run ./argos-workspace/collections --env ci --reporter junit=argos-report.xml --reporter json=argos-report.json --reporter html=argos-report.html artifacts: when: always paths: - argos-report.html - argos-report.json reports: junit: argos-report.xmlGitLab’s built-in artifacts:reports:junit makes a failed test the
source of truth for pass/fail — no continue-on-error gymnastics needed.
Secrets
Environment files committed to the repo should never contain secrets.
Use --env <NAME> to select a CI environment and pass real values
through the CI provider’s secret variables:
env: ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}Reference them via standard {{NAME}} placeholders in headers or URLs —
Argos’s resolver folds CI-injected variables into the env map for the
run.
Other tips
- Timeouts: the binary has no global wall clock; set one on the CI
job (
timeout-minutes: 10on GitHub,timeout: 10 minuteson GitLab) so a hung request doesn’t burn worker minutes. --bail: add when you want the first failure to stop the run. Useful for smoke checks where downstream requests can’t recover from a broken auth step.--iteration-data <file>: data-driven runs are JUnit-aware — each iteration becomes a nested<testsuite>, surfaced in CI panels as a separate section.
Ready-to-copy workflow files also live in examples/ci/ in the repo.