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: jantuomi/ansible:alpine3 only: - tags script: - chmod 600 "$SSH_PRIVATE_KEY_FILE" - IMAGE="$IMAGE_NAME:$CI_COMMIT_TAG" - ansible-playbook --private-key "$SSH_PRIVATE_KEY_FILE" -i "$INVENTORY_FILE" -e "image_name=$IMAGE docker_user=gitlab-ci-token docker_password=$CI_JOB_TOKEN docker_registry=$CI_REGISTRY" -u root ansible/deploy-playbook.yaml