image: docker:20.10.22 stages: - test - build - push ############## # TEST STAGE # ############## test: stage: test image: docker/compose:latest variables: DOCKER_TLS_CERTDIR: '' services: - docker:dind script: - docker-compose -f docker-compose.ci.tools.yml -p auth-tools --env-file ci/.env.ci up -d - sh ci/wait-up.sh - docker-compose -f docker-compose.ci.service.yml -p auth-service --env-file ci/.env.ci up -d - docker exec -t v3-auth-api sh -c "npm run test:integration:ci" coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/ ############### # BUILD STAGE # ############### build: stage: build image: docker:20.10.22 variables: DOCKER_TLS_CERTDIR: '' services: - docker:dind before_script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY script: # fetches the latest image (not failing if image is not found) - docker pull $CI_REGISTRY_IMAGE:latest || true - > docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA ############## # PUSH STAGE # ############## push latest: stage: push variables: GIT_STRATEGY: none only: - main before_script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY script: - export VERSION=$(docker run --rm -v "$PWD":/usr/src/app:ro -w /usr/src/app node:slim node -p "require('./package.json').version") - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$VERSION $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest # push tag: # stage: push # variables: # GIT_STRATEGY: none # only: # - tags # before_script: # - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY # script: # - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA # - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME # - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME