Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
This GitLab CI configuration is valid. Learn more
.gitlab-ci.yml 4.55 KiB
stages:
- build
- publish
- deploy
- docs
- mirror

cache:
  untracked: true
  key: "$CI_PROJECT_ID"
  paths:
  - ./cache/

variables:
#  production_repo: ubleipzig/folio-okapi
  production_repo: services.ub.uni-leipzig.de:11443/bdd_dev/folio/okapi
  staging_repo: services.ub.uni-leipzig.de:11443/bdd_dev/folio/okapi
  alpha_repo: services.ub.uni-leipzig.de:11443/bdd_dev/folio/okapi
  DOCKER_TLS_CERTDIR: ""
  OKAPI_VERSION: v5.2.0

docker_build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:v1.9.2-debug
    entrypoint: [""]
  before_script:
   - export dockerconfig=${DOCKER_ALPHA_AUTH_CONFIG}
   - echo -ne "Setting docker auth config ..."
   - mkdir -p ${HOME}/.docker && echo "${dockerconfig}" >${HOME}/.docker/config.json
   - cat ${HOME}/.docker/config.json
   - mkdir -p /kaniko/.docker && echo "${dockerconfig}" >/kaniko/.docker/config.json
   - cat /kaniko/.docker/config.json

  script:
    - cp /var/run/secrets/kubernetes.io/serviceaccount/ca.crt /etc/ssl/certs/ca-kube.crt
    - update-ca-certificates
    - /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --destination "${alpha_repo}:${CI_COMMIT_BRANCH}"
      --destination "${alpha_repo}:alpha"
      --build-arg "HTTP_PROXY=${HTTP_PROXY}"
      --build-arg "HTTPS_PROXY=${HTTPS_PROXY}"
      --build-arg "NO_PROXY=${NO_PROXY}"
      --no-push
      --tarPath image.tar


  #     --output image.tar.gz

  #   deployer build \
  artifacts:
  #   name: docker-image
    paths:
    - image.tar
  tags:
    - kaniko
  only:
    changes:
      - Dockerfile
      - assets/**/*
      - .gitlab-ci.yml
    
docker_publish_alpha:
  stage: publish
  image:
    name: gcr.io/go-containerregistry/crane:debug
    entrypoint: [""]
  before_script:
  - export dockerconfig=${DOCKER_ALPHA_AUTH_CONFIG}
  - echo -ne "Setting docker auth config ..."
  - mkdir -p ${HOME}/.docker && echo "${dockerconfig}" >${HOME}/.docker/config.json
  - cat ${HOME}/.docker/config.json
  - set
  script:
  - crane push image.tar "${alpha_repo}:${CI_COMMIT_BRANCH}"
  - crane tag "${alpha_repo}:${CI_COMMIT_BRANCH}" "alpha"
  dependencies:
  - docker_build
  tags:
    - kaniko
  only:
    refs:
    - branches
    changes:
    - Dockerfile
    - .gitlab-ci.yml
    - assets/**/*
  except:
  - master

docker_publish_staging:
  stage: publish
  image: ubleipzig/deployer:1.5.0-rc2
  services:
  - docker:dind
  script: |
    deployer publish \
      --input image.tar.gz \
      --docker-config "${DOCKER_STAGING_AUTH_CONFIG}" \
      --name ${staging_repo} \
      --tag ${OKAPI_VERSION} \
      --tag staging
  dependencies:
  - docker_build
  tags:
  - docker
  only:
    refs:
    - master
    changes:
    - Dockerfile
    - assets/**/*
    - .gitlab-ci.yml

## Pipeline to publish to docker-hub. Disabled at the moment.
#docker_publish_production:
#  stage: publish
#  image: ubleipzig/deployer:1.5.0-rc2
#  services:
#  - docker:dind
#  script: |
#    declare version=`expr "${CI_COMMIT_TAG}" ':' 'release/\(.\+\)'`
#    declare major_version=`expr "${version}" ':' '\([^.]\+\)'`
#    declare minor_version=`expr "${version}" ':' '[^.]\+\.\([^.]\+\)'`
#    declare patch_version=`expr "${version}" ':' '[^.]\+\.[^.]\+\.\([^-]\+\)'`
#    declare image_version=`expr "${version}" ':' '[^.]\+\.[^.]\+\.[^-]\+-\(.\+\)'`
#    deployer publish \
#      --input image.tar.gz \
#      --docker-config "${DOCKER_PRODUCTION_AUTH_CONFIG}" \
#      --name ${production_repo} \
#      --tag latest \
#      --tag ${version} \
#      --tag "${major_version}.${minor_version}" \
#      --tag "${major_version}"
#  dependencies:
#  - docker_build
#  tags:
#    - docker
#  except:
#  - branches
#  only:
#    refs:
#    - /^release\/.*/


## Pipeline to publish to ub internal nexus.
docker_publish_production:
  stage: publish
  image: ubleipzig/deployer:1.5.0-rc2
  services:
  - docker:dind
  script: |
    declare version=`expr "${CI_COMMIT_TAG}" ':' 'release/\(.\+\)'`
    declare major_version=`expr "${version}" ':' '\([^.]\+\)'`
    declare minor_version=`expr "${version}" ':' '[^.]\+\.\([^.]\+\)'`
    declare patch_version=`expr "${version}" ':' '[^.]\+\.[^.]\+\.\([^-]\+\)'`
    declare image_version=`expr "${version}" ':' '[^.]\+\.[^.]\+\.[^-]\+-\(.\+\)'`
    deployer publish \
      --input image.tar.gz \
      --docker-config "${DOCKER_STAGING_AUTH_CONFIG}" \
      --name ${production_repo} \
      --tag latest \
      --tag ${version} \
      --tag "${major_version}.${minor_version}" \
      --tag "${major_version}"
  dependencies:
  - docker_build
  tags:
    - docker
  except:
  - branches
  only:
    refs:
    - /^release\/.*/