79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
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
 |