stages: - build - prepare - release - deploy variables: DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: '' # Use a tag de imagem específica para a imagem Docker: DOCKER_IMAGE_TAG: '20.10' build-image: stage: build image: docker:$DOCKER_IMAGE_TAG services: - docker:dind script: - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG -f Dockerfile . - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG # envia para o docker hub - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG $DOCKERHUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_TAG - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin - docker push $DOCKERHUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_TAG only: - tags prepare_job: stage: prepare image: alpine:latest rules: - if: '$CI_COMMIT_TAG =~ /^v?\d+\.\d+\.\d+$/' script: - apk add jq - cp CHANGELOG.md release_notes.md artifacts: paths: - release_notes.md release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest needs: - job: prepare_job artifacts: true rules: - if: '$CI_COMMIT_TAG =~ /^v?\d+\.\d+\.\d+$/' script: - echo "Creating release" release: name: 'Release $CI_COMMIT_TAG' description: release_notes.md tag_name: '$CI_COMMIT_TAG' ref: '$CI_COMMIT_SHA' assets: links: - name: 'Container Image $CI_COMMIT_TAG' url: 'https://$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA' deploy: stage: deploy image: python:3.9 before_script: - apt-get update && apt-get install -y awscli ansible python3-docker - curl -o inventory.ini https://inventary-ansible.s3.sa-east-1.amazonaws.com/inventory.ini - INVENTORY_FILE=$PWD/inventory.ini # Use a chave SSH armazenada como variável protegida do GitLab: - echo "$SSH_PRIVATE_KEY" > id_rsa - chmod 600 id_rsa script: - export ANSIBLE_SSH_PRIVATE_KEY_FILE=$PWD/id_rsa - export ANSIBLE_HOST_KEY_CHECKING=False - ansible-playbook -i $INVENTORY_FILE -u root --private-key=id_rsa $CI_PROJECT_DIR/playbook.yml only: - tags