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

variables:
  image_name: ubleipzig/deployer

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_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
Ulf Seltmann's avatar
Ulf Seltmann committed
    mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
    docker load --input=image.tar.gz
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker tag image ${image_name}:alpha-${CI_COMMIT_REF_NAME}
    docker push ${image_name}:alpha-${CI_COMMIT_REF_NAME}
Ulf Seltmann's avatar
Ulf Seltmann committed
  dependencies:
  - docker_build
  tags:
    - docker

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
Ulf Seltmann's avatar
Ulf Seltmann committed
  variables:
    CI_DEBUG_TRACE: "true"
Ulf Seltmann's avatar
Ulf Seltmann committed
  script: |
    test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
    mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
    docker load --input=image.tar.gz
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker tag image ${image_name}:staging
    docker push ${image_name}:staging
Ulf Seltmann's avatar
Ulf Seltmann committed
  dependencies:
  - docker_build
  tags:
    - docker
  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
Ulf Seltmann's avatar
ci  
Ulf Seltmann committed
  variables:
    CI_DEBUG_TRACE: "true"
Ulf Seltmann's avatar
Ulf Seltmann committed
  script: |
Ulf Seltmann's avatar
Ulf Seltmann committed
    test "${DOCKER_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false
Ulf Seltmann's avatar
Ulf Seltmann committed
    mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
Ulf Seltmann's avatar
Ulf Seltmann committed
    version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'`
    major_version=`expr ${version} ':' '\([^.]\+\)'`
    minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'`
    patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'`
Ulf Seltmann's avatar
Ulf Seltmann committed
    docker load --input=image.tar.gz
Ulf Seltmann's avatar
Ulf Seltmann committed
    for tag in "latest" "${major_version}" "${major_version}.${minor_version}" "${version}"; do
      docker tag image ${image_name}:${tag}
      docker push ${image_name}:${tag}
    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\/.*/