Skip to content

Local Run

No Node installation is required on the host.

cd <repository root>

# Run the whole pipeline (including test services)
docker compose -p iqv-ci -f ci/docker-compose.ci.yml run --rm ci-runner

# Cleanup (test data lives in tmpfs; remove volumes anyway)
docker compose -p iqv-ci -f ci/docker-compose.ci.yml down -v

Reports are written to ci/reports/.

The production docker-compose.yml is not affected: CI uses a separate project name (iqv-ci).

2) Without Docker

Node 22 is required (dashboard engines: >=22 <23).

cd backend   && npm ci && cd ..
cd dashboard && npm ci && cd ..

node ci/scripts/run-ci.mjs
node ci/scripts/generate-ci-report.mjs

Partial runs

node ci/scripts/run-ci.mjs --only=backend        # backend phases only
node ci/scripts/run-ci.mjs --only=frontend       # frontend phases only
node ci/scripts/run-ci.mjs --only=backend-unit   # a single phase
node ci/scripts/run-ci.mjs --skip=frontend-tests # skip one phase

To suppress the CI verdict while generating the report:

node ci/scripts/generate-ci-report.mjs --no-fail

A partial run cannot be green: if a mandatory phase never ran, the policy reports FAILED (see quality-policy.md).

Environment variables

Variable Default Purpose
IQV_PROJECT_ROOT two levels above the script repository root
IQV_CI_PHASE_TIMEOUT_MS 1800000 per-phase limit
TEST_MONGODB_HOST/PORT — real MongoDB tests
TEST_MINIO_ENDPOINT/PORT — real object storage tests

Without these variables the corresponding tests skip themselves through their own guards and appear as BLOCKED / skipped in the report — a mocked result is never presented as a real integration.