Generic CI and Jenkins
Exevra’s CLI runs in any CI system that can check out the repository, run Node 22 or later, and execute Bash. You do not need a Jenkins plugin or a hosted Exevra service.
Install the CLI
Section titled “Install the CLI”Add Exevra to the target repository’s development dependencies. Commit the resulting lockfile so CI installs the reviewed version.
npm install --save-dev @exevra-dev/cli@0.1.1The CI job runs the command in .exevra.yml. That command must create the fresh JUnit XML report named under reports.
Basic CI step
Section titled “Basic CI step”Install the project’s locked dependencies, then run the locally installed binary:
npm cinpx exevra check --config .exevra.ymlCommit .exevra.yml and the reviewed .exevra/baseline.json before adding this step. Use record locally when you first create the baseline or intentionally change its execution contract. See Baselines for the review workflow.
The default enforce mode exits with code 1 for error findings. It exits with code 2 for an invalid invocation or an operational error, such as a missing report. Either code fails a normal CI shell step. See Output and exit codes for the complete behavior.
Jenkins Pipeline
Section titled “Jenkins Pipeline”This declarative pipeline runs Exevra on a POSIX Jenkins agent and publishes the JUnit report after the stage finishes. Jenkins runs its JUnit step in post { always { ... } } even when Exevra fails, so it can retain the test report for diagnosis.
pipeline { agent any
stages { stage('Test execution integrity') { steps { sh ''' npm ci npx exevra check --config .exevra.yml ''' } post { always { junit 'artifacts/junit.xml' } } } }}Change artifacts/junit.xml in the Jenkins junit step if your reports path in .exevra.yml differs. The report is written by the configured command, not by the Jenkins pipeline itself.
npx resolves the exevra binary from the project’s installed dependencies. It does not need a global install.
Watched-file comparison
Section titled “Watched-file comparison”Exevra can compare watched paths against a Git base ref when that ref exists in the checkout. Fetch the ref first, then pass it to check:
git fetch origin main:refs/remotes/origin/mainnpx exevra check --config .exevra.yml --base-ref origin/mainUse the base branch for your project instead of main when it differs. Without --base-ref, Exevra still checks the fresh JUnit report and baseline, then reports that changed-file comparison was unavailable.
CI boundaries
Section titled “CI boundaries”The CLI prints normal text by default. Use --format json when another system needs structured output. GitHub Actions has an additional adapter for annotations and job summaries, but the underlying check is the same.
v0 requires a POSIX environment because it runs the configured test command through Bash. Windows Jenkins agents are not supported yet. The configured command is not sandboxed, so treat it with the same review and credential boundaries as any other repository command in CI.