stages: - build - publish - deploy - docs - mirror variables: 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 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 docker_publish_alpha: stage: publish image: docker:latest services: - docker:dind script: | test "${DOCKER_ALPHA_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false mkdir -p ~/.docker && echo "$DOCKER_ALPHA_AUTH_CONFIG" >~/.docker/config.json 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} dependencies: - docker_build tags: - docker only: - branches except: - master docker_publish_staging: stage: publish image: docker:latest services: - docker:dind script: | test "${DOCKER_STAGING_AUTH_CONFIG}" == "" && echo "docker-config does not exists, aborting!" && false mkdir -p ~/.docker && echo "$DOCKER_STAGING_AUTH_CONFIG" >~/.docker/config.json docker load --input=image.tar.gz docker tag image ${staging_repo}:staging docker push ${staging_repo}:staging dependencies: - docker_build tags: - docker only: - master docker_publish_production: 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 docker load --input=image.tar.gz export version=`expr ${CI_COMMIT_TAG} ':' 'release/\(.\+\)'` export major_version=`expr ${version} ':' '\([^.]\+\)'` export minor_version=`expr ${version} ':' '[^.]\+\.\([^.]\+\)'` export patch_version=`expr ${version} ':' '[^.]\+\.[^.]\+\.\(.\+\)'` echo "major version ${major_version}, minor version ${minor_version}, patch version ${patch_version}" for tag in "latest" "${major_version}" "${major_version}.${minor_version}" "${version}";do docker tag image ${production_repo}:${tag} docker push ${production_repo}:${tag} done dependencies: - docker_build tags: - docker except: - branches only: - /^release\/.*/