Se você está procurando uma maneira de testar e implantar suas imagens Docker no CircleCI, a criação de um pipeline CI/CD pode levá-lo longe na melhoria da entrega de software.
Neste tutorial, você aprenderá como potencialmente desenvolver um pipeline CI/CD para sua imagem Docker usando CircleCI.
Continue lendo e implante suas imagens Docker, apenas se elas passarem no teste!
Pré-requisitos
Este tutorial será uma demonstração prática. Se deseja acompanhar, certifique-se de ter o seguinte:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- Docker instalado.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
Criando uma Imagem Docker de uma Aplicação Baseada em Python
Antes de avançar para a criação de um pipeline CI/CD, você primeiro criará uma imagem Docker com base em uma aplicação Python que exibe textos em um navegador da web. Você passará brevemente por como a aplicação é construída, escreverá os casos de teste para a aplicação e, em seguida, containerizará a aplicação.
1. Abra o seu terminal e execute o seguinte comando para instalar
Flask e Pytest. Flask é um framework usado para construir aplicações web em Python enquanto o Pytest é usado para escrever testes de código Python.
2. Em seguida, crie um diretório de projeto com o nome de sua preferência, mas o diretório de projeto é chamado de flask-circleci
nesta demonstração. Este diretório é onde você vai armazenar seus recursos para este tutorial.
3. Crie um arquivo chamado flask-circleci/main.py e preencha com o seguinte código.
O código abaixo exibe o texto “Bem-vindo à minha aplicação Flask” em uma página inicial no navegador.
4. Agora, crie outro arquivo chamado flask-circleci/test_main.py e copie/cole o seguinte código.
O código abaixo cria um cliente de teste para sua aplicação.
O Pytest requer que o nome do seu arquivo de teste comece com test_, como demonstrado abaixo.
5. Execute os seguintes comandos para navegar até o diretório do seu projeto (flask-circleci
), execute o teste para o seu projeto.
Se o teste for bem-sucedido, você obterá 100% de progresso, como mostrado abaixo.

6. Em seguida, crie um arquivo de texto (requirements.txt) para documentar suas dependências no diretório raiz e preencha o texto abaixo. Este arquivo é essencial ao construir sua imagem Docker para que ela funcione corretamente.
7. Por fim, crie um novo arquivo (flask-circleci/Dockerfile) e escreva as instruções abaixo no Dockerfile para construir sua imagem Docker.
As instruções no Dockerfile realizam o seguinte:
- Cria um arquivo em sua imagem.
- Copia todos os arquivos no diretório atual (flask-circleci).
- Execute seu código
Criando um Pipeline CI/CD do CircleCI
Agora que você tem sua imagem Docker pronta, você criará um pipeline CI/CD para testar seu código e, se todos os testes passarem, a imagem Docker será enviada para o Docker Hub. O Docker Hub é um serviço como o GitHub, mas para imagens Docker, que ajuda você a encontrar e compartilhar imagens de contêiner com sua equipe ou outros desenvolvedores.
Para criar o pipeline CI/CD, siga os passos abaixo:
1. Abra seu navegador da web favorito e faça login em sua conta do Docker Hub.
2. Na página inicial do Docker Hub, clique na opção Criar Repositório para criar um repositório no Docker Hub.

3. Defina um nome único para o seu repositório. Este tutorial usa um repositório chamado circleci-tutorial, como mostrado abaixo.

4. Crie um novo arquivo (flask-circleci/config.yml) na raiz do seu projeto e copie/cole o código abaixo para o arquivo config.yml.
O código abaixo obtém uma imagem Python pronta e a utiliza para instalar as dependências e executar os testes unitários para construir e enviar sua imagem Docker para seu repositório no Docker Hub.
Geralmente, para um projeto em produção, você gostaria de colocar seu nome de usuário e senha protegidos dentro do CircleCI ou talvez em um arquivo .env.
5. Finalmente, execute os seguintes comandos na raiz do seu projeto para commitar
e pushar
o código (flask-circleci/config.yml) para o seu repositório GitHub.
Ativando o Pipeline CircleCI CI/CD
Você acabou de criar seu Pipeline CircleCI CI/CD, mas por enquanto, ele está apenas lá parado e não fazendo muito. Você precisará ativar seu pipeline configurando um projeto em sua conta CircleCI.
1. Faça login em sua conta CircleCI com sua conta do GitHub em seu navegador da web.
2. Em seguida, clique na aba Projetos no painel esquerdo e clique no botão Configurar Projeto do lado direito do seu projeto para ativar o pipeline CircleCI no projeto.
Como você fez login no CircleCI com sua conta do GitHub, seus projetos são sincronizados com o CircleCI, como na imagem abaixo.

3. Navegue de volta para a aba Painel e você verá o status de Sucesso. O status de Sucesso indica que tudo foi executado conforme o esperado, e a imagem foi enviada para o seu repositório Docker Hub.
Clique em construir para ver todos os passos que foram executados no pipeline.

Abaixo, você pode ver a lista de etapas que o CircleCI realizou para executar o pipeline.

4. Por fim, volte para o seu repositório Docker Hub, e você verá a imagem que você enviou para o Docker Hub através do pipeline CircleCI.

Enviando Alterações para o GitHub para Acionar o Pipeline CircleCI
Neste momento, você já possui um pipeline funcional do CircleCI. Mas talvez você tenha feito alterações no seu projeto. Se sim, como você saberia se o pipeline ainda está funcionando? Você pode acionar o CircleCI ao enviar mudanças para o seu repositório no GitHub e ver se o teste será bem-sucedido.
1. Em sua máquina local, substitua o código que você possui em test_main.py com o código abaixo. O código abaixo tem o propósito de garantir que o teste falhe, pois o código de status mudou de 200
para 400
.
2. Em seguida, substitua as etapas
no config.yml que constroem a imagem Docker e a enviam para o Docker Hub com o código abaixo.
No código abaixo, você está apenas alterando a versão para garantir que apenas as novas alterações sejam enviadas para o seu repositório no GitHub.
3. Execute os seguintes comandos na raiz do seu projeto para confirmar
e enviar
o código para o seu repositório no GitHub.
4. Agora, vá para o painel do CircleCI, e você verá que a construção falhou, conforme mostrado abaixo.
Clique em construir para ver os passos tomados para enviar as alterações e confirmar o que causou a falha na construção.


5. Por último, vá para o repositório do Docker Hub e confirme que as alterações não foram enviadas.
Como você pode ver na imagem abaixo, a versão 2 não foi carregada porque o teste falhou.

Conclusão
Ao longo deste tutorial, você aprendeu como escrever testes e dockerizar sua aplicação Python. Você criou um pipeline CI/CD com o CircleCI que executa o teste para sua aplicação e envia sua imagem Docker para o Docker Hub.
Neste ponto, você já possui um conhecimento fundamental para desenvolver um pipeline CI/CD com o CircleCI. Agora, como pretende usar esse conhecimento recém-adquirido? Talvez criando um pipeline CI/CD que implementa sua imagem Docker no Heroku?
Source:
https://adamtheautomator.com/circleci-docker-images/