Em tempos de estudo para aprender sobre outras ferramentas de CI\CD, peguei o desafio de realizar a criação de um CI para poder fazer o build e push das minhas imagens Docker para o ECR da AWS com Gitlab. Então depois de muitas consultas ao pai de todas as pesquisas (Google e Documentação), irei documentar e compartilhar neste Post de forma mais simples possivel como você pode utilizar aqueles minutos "free" do gitlab para fazer este processo.
Passos:
AWS - IAM Permissões:
1 - Crie um usuário com policy de acesso ao ECR, pode ser utilizada a policy AmazonEC2ContainerRegistryFullAccess para este teste, depois verifique qual a permissão mais adequada;
2 - Crie o seu repositorio ECR na AWS;
GitLab:
3 - Crie no seu repositorio do gitlab, o arquivo .gitlab-ci.yml e também versione todos os seus arquivos referente a sua imagem Docker (.Dockerfile e etc);
-
4 - Definindo as variaveis de conexão com a sua account AWS para que o Gitlab possa se comunicar com o ECR.
Acesse as configurações (settings -> CI\CD) do seu projeto;
Defina as variaveis e os valores que serão utilizados no pipeline do gitlab.
Variaveis Gitlab + AWS:
As três variveis abaixo (AWS*) são nativas de integração do gitlab com a AWS para permitir realizar a autenticação com a AWS (get-login).
Referencia: https://docs.gitlab.com/ee/ci/cloud_deployment/
AWS_ACCESS_KEY_ID = ID da sua account aws;
AWS_SECRET_ACCESS_KEY = secret da sua account;
AWS_DEFAULT_REGION = region do ECR;
Outras variaveis:
DOCKER_REGISTRY = caminho do seu repositorio;
Exemplo: (seuregistry.dkr.ecr.us-east-1.amazonaws.com);
REPOSITORY = nome do repositorio (/nome_repositorio);
- 5 - Voltando ao .gitlab-ci.yml, iremos utilizar um agent shared do Gitlab no modo Dind (Docker in Docker); Saiba mais sobre Dind: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
Só copiar e testar ;)
image:
#utilizado image aws-cli para permitir realizar o get-login da aws;
name: amazon/aws-cli
entrypoint: [""]
services:
- docker:dind
stages:
- build
before_script:
## realizando a instalação do docker
- amazon-linux-extras install docker
- aws --version
- docker --version
##login na aws
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY
Build and Push - ECR:
stage: build
script:
- docker build -t $DOCKER_REGISTRY/$REPOSITORY:latest .
- docker push $DOCKER_REGISTRY/$REPOSITORY:latest
Top comments (0)