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:alpine3 only: - tags script: - cp "$SSH_PRIVATE_KEY_FILE" ~/.ssh/id_rsa - ansible-playbook -i "$INVENTORY_FILE" ansible/deploy-playbook.yaml -e "image_name=$IMAGE"