stages: - publish - deploy publish: stage: publish image: docker:stable services: - docker:stable-dind only: - tags script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - IMAGE="$IMAGE_NAME:$CI_COMMIT_TAG" - IMAGE_LATEST="$IMAGE_NAME:latest" - docker build . -f ./Dockerfile -t "$IMAGE" --cache-from "$IMAGE_LATEST" - docker tag "$IMAGE" "$IMAGE_LATEST" - docker push $IMAGE - docker push $IMAGE_LATEST deploy: stage: deploy image: williamyeh/ansible:ubuntu18.04-onbuild only: - tags script: - chmod 600 "$SSH_PRIVATE_KEY_FILE" - ansible-playbook --private-key "$SSH_PRIVATE_KEY_FILE" -i "$INVENTORY_FILE" -e "image_name=$IMAGE" -u root ansible/deploy-playbook.yaml