image: docker:latest stages: - build - deploy build: stage: build script: - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" "$DOCKER_REGISTRY" - docker build --pull -t "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" . - docker image tag "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:latest" - docker push "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" - docker push "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:latest" except: - master deploy_production: stage: deploy script: - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" "$DOCKER_REGISTRY" - export http_proxy=http://proxy.esrf.fr:3128 - 'which ssh-agent || ( apk update && apk add openssh-client )' - eval $(ssh-agent -s) - echo "$SSH_DEPLOY_KEY_PROD" | ssh-add - - mkdir -p ~/.ssh - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - ssh -l gitlab-deploy "$DEPLOY_HOST" "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" environment: name: production url: http://doi.esrf.fr/ when: manual except: - master