GitLab

GitLab CI/CD: Local testing in CI

Test against a local Zuplo server before deploying anywhere.

YAML.gitlab-ci.yml
image: node:24 stages: - test - deploy local-test: stage: test script: - npm install - npx zuplo dev & # Poll until the server answers, with a hard deadline — never a fixed sleep - | deadline=$((SECONDS + 60)) until curl --fail --silent --output /dev/null http://localhost:9000/health; do if (( SECONDS >= deadline )); then echo "Local server did not start within 60s" >&2 exit 1 fi sleep 1 done - npx zuplo test --endpoint http://localhost:9000 - kill %1 deploy: stage: deploy needs: - local-test script: - npm install - npx zuplo deploy --api-key "$ZUPLO_API_KEY" only: - main

Local tests run first. Only if they pass does deployment proceed.

The readiness poll replaces a fixed sleep. A sleep is a guess about startup time that is wrong in both directions, and it is the most common reason a gateway test suite "needs" a retry. The example polls /health — add an unauthenticated health route if your gateway does not have one. See health checks.

Next steps

Last modified on