Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.75 KiB
Newer Older
Ulf Seltmann's avatar
Ulf Seltmann committed
stages:
- build
- publish
- deploy
- docs
- mirror

variables:
Ulf Seltmann's avatar
Ulf Seltmann committed
  production_repo: ubleipzig/deployer
  staging_repo: services.ub.uni-leipzig.de:11443/bdd_dev/deployer
  alpha_repo: services.ub.uni-leipzig.de:11443/bdd_dev/deployer
Ulf Seltmann's avatar
Ulf Seltmann committed

docker_build:
  stage: build
  image: docker:latest
  services:
  - docker:dind
  script: |
    docker build --pull \
      --build-arg HTTP_PROXY=${HTTP_PROXY} \
      --build-arg HTTPS_PROXY=${HTTPS_PROXY} \
      --build-arg NO_PROXY=${NO_PROXY} \
      --build-arg http_proxy=${HTTP_PROXY} \
      --build-arg https_proxy=${HTTPS_PROXY} \
      --build-arg no_proxy=${NO_PROXY} \
      -t image \
      .
    docker save --output=image.tar.gz image
  artifacts:
    name: docker-image
    paths:
    - image.tar.gz
  tags:
    - docker

Ulf Seltmann's avatar
Ulf Seltmann committed
docker_publish_alpha:
Ulf Seltmann's avatar
Ulf Seltmann committed
  stage: publish
  image: docker:latest
  services:
  - docker:dind
  script: |
Ulf Seltmann's avatar
Ulf Seltmann committed
    test "${DOCKER_ALPHA_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
    mkdir -p ~/.docker && echo "$DOCKER_ALPHA_AUTH_CONFIG" >~/.docker/config.json
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker load --input=image.tar.gz
    docker tag image ${alpha_repo}:alpha-${CI_COMMIT_REF_SLUG}
    docker push ${alpha_repo}:alpha-${CI_COMMIT_REF_SLUG}
Ulf Seltmann's avatar
Ulf Seltmann committed
  dependencies:
  - docker_build
  tags:
Ulf Seltmann's avatar
ci  
Ulf Seltmann committed
  - docker
  only:
  - branches
  except:
  - master
Ulf Seltmann's avatar
Ulf Seltmann committed

Ulf Seltmann's avatar
Ulf Seltmann committed
docker_publish_staging:
Ulf Seltmann's avatar
Ulf Seltmann committed
  stage: publish
  image: docker:latest
  services:
  - docker:dind
  script: |
Ulf Seltmann's avatar
Ulf Seltmann committed
    test "${DOCKER_STAGING_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
    mkdir -p ~/.docker && echo "$DOCKER_STAGING_AUTH_CONFIG" >~/.docker/config.json
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker load --input=image.tar.gz
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker tag image ${staging_repo}:staging
    docker push ${staging_repo}:staging
Ulf Seltmann's avatar
Ulf Seltmann committed
  dependencies:
  - docker_build
  tags:
Ulf Seltmann's avatar
ci  
Ulf Seltmann committed
  - docker
Ulf Seltmann's avatar
Ulf Seltmann committed
  only:
Ulf Seltmann's avatar
Ulf Seltmann committed
  - master
Ulf Seltmann's avatar
Ulf Seltmann committed

Ulf Seltmann's avatar
Ulf Seltmann committed
docker_publish_production:
Ulf Seltmann's avatar
Ulf Seltmann committed
  stage: publish
  image: docker:latest
  services:
  - docker:dind
  script: |
    test "${DOCKER_PRODUCTION_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
    mkdir -p ~/.docker && echo "$DOCKER_PRODUCTION_AUTH_CONFIG" >~/.docker/config.json
Ulf Seltmann's avatar
ci  
Ulf Seltmann committed
    docker load --input=image.tar.gz
Ulf Seltmann's avatar
ci  
Ulf Seltmann committed
    export version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'`
    export major_version=`expr ${version} ':' '\([^.]\+\)'`
    export minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'`
    export patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'`
Ulf Seltmann's avatar
Ulf Seltmann committed
    echo "major version ${major_version}, minor version ${minor_version}, patch version ${patch_version}"
Ulf Seltmann's avatar
Ulf Seltmann committed
    for tag in "latest" "${major_version}" "${major_version}.${minor_version}" "${version}";do
Ulf Seltmann's avatar
Ulf Seltmann committed
      docker tag image ${production_repo}:${tag}
      docker push ${production_repo}:${tag}
Ulf Seltmann's avatar
Ulf Seltmann committed
    done
Ulf Seltmann's avatar
Ulf Seltmann committed
  dependencies:
  - docker_build
  tags:
    - docker
Ulf Seltmann's avatar
Ulf Seltmann committed
  except:
  - branches
Ulf Seltmann's avatar
Ulf Seltmann committed
  only:
Ulf Seltmann's avatar
Ulf Seltmann committed
  - /^release\/.*/