Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 1.59 KiB
# This is a GitLab CI configuration to build the project as a docker image

image: docker:19.03

include:
  - template: Container-Scanning.gitlab-ci.yml

stages:
  - build
  - test
  - push

before_script:
  - echo -n $CI_JOB_TOKEN | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY

# Docker Build, Tag and Push SHA
Build:
  stage: build
  tags: ['docker-runner']
  script:
    # fetches the latest image (not failing if image is not found)
    - docker pull $CI_REGISTRY_IMAGE:latest || true
    - >
      docker build
      --pull
      --build-arg VCS_REF=$CI_COMMIT_SHA
      --build-arg VCS_URL=$CI_PROJECT_URL
      --build-arg BUILD_DATE=$CI_PIPELINE_CREATED_AT
      --cache-from $CI_REGISTRY_IMAGE:latest
      --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
      .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

# Docker Pull SHA, Tag Latest and Push Latest
Push latest:
  variables:
    GIT_STRATEGY: none
  stage: push
  tags: ['docker-runner']
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
  script:
    - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
    - docker push $CI_REGISTRY_IMAGE:latest

# Docker Pull SHA, Tag and Push Tag
Push tag:
  variables:
    GIT_STRATEGY: none
  stage: push
  tags: ['docker-runner']
  rules:
    - if: $CI_COMMIT_TAG
  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

container_scanning:
  tags: ['docker-runner']