Como implementar CI/CD com GitHub Actions e Docker de forma simples
Como implementar CI/CD com GitHub Actions e Docker de forma simples Como implementar CI/CD com GitHub Actions e Docker de forma simples Automatizar o processo de build, teste e...
Como implementar CI/CD com GitHub Actions e Docker de forma simples
Como implementar CI/CD com GitHub Actions e Docker de forma simples
Automatizar o processo de build, teste e deploy de aplicações é fundamental no desenvolvimento de software moderno. A Integração Contínua (CI) e a Entrega Contínua (CD) não são mais um luxo, mas uma necessidade. Felizmente, com ferramentas como GitHub Actions e Docker, esse processo se tornou muito mais acessível. Neste guia, vamos mostrar como implementar CI/CD com GitHub Actions e Docker de forma simples, focando em um fluxo prático que você pode adaptar para seus próprios projetos.
O que vamos construir?
Vamos criar um pipeline de CI/CD que, a cada push para a branch main do nosso repositório no GitHub, irá automaticamente:
- Fazer o checkout do código.
- Construir uma imagem Docker da nossa aplicação.
- Fazer o push dessa imagem para um registro, como o Docker Hub.
Este é o primeiro passo essencial para uma automação completa, permitindo que você posteriormente configure um servidor para puxar a nova imagem e atualizar a aplicação em produção.
Passo 1: Preparando a aplicação e o Dockerfile
Antes de configurar o pipeline, você precisa de duas coisas: uma aplicação e um Dockerfile. O Dockerfile é uma receita que ensina o Docker a construir a imagem da sua aplicação. Para este exemplo, vamos usar um Dockerfile simples para uma aplicação Node.js.
Crie um arquivo chamado Dockerfile na raiz do seu projeto:
# Usa uma imagem base oficial do Node.js
FROM node:18-alpine
# Define o diretório de trabalho dentro do contêiner
WORKDIR /app
# Copia o package.json e package-lock.json
COPY package*.json ./
# Instala as dependências da aplicação
RUN npm install
# Copia o restante dos arquivos da aplicação
COPY . .
# Expõe a porta que a aplicação vai rodar
EXPOSE 3000
# Comando para iniciar a aplicação
CMD [ "node", "app.js" ]
Este arquivo define todos os passos para criar um ambiente isolado e funcional para sua aplicação. É o pilar da nossa estratégia de containerização.
Passo 2: Configurando o Workflow do GitHub Actions
Agora vem a mágica da automação. O GitHub Actions usa arquivos de workflow em formato YAML para definir os pipelines. Crie a seguinte estrutura de diretórios no seu projeto: .github/workflows/. Dentro dela, crie um arquivo chamado main.yml.
Este arquivo irá conter as instruções para o nosso pipeline de CI/CD.
Estrutura básica do Workflow
O arquivo YAML tem três seções principais:
name: O nome do seu workflow, que aparecerá na aba “Actions” do GitHub.on: O gatilho (trigger) que inicia o workflow. No nosso caso, será umpushna branchmain.jobs: Uma lista de tarefas a serem executadas. Teremos um job chamadobuild-and-push.
Passo 3: Construindo o Job de Build e Push
Dentro do nosso job, vamos definir os passos (steps) para construir e publicar a imagem Docker. Mas antes, precisamos configurar os segredos no GitHub para não expor nossas credenciais no código.
Configurando os Segredos no GitHub
Para fazer login no Docker Hub (ou outro registro), você precisará de um nome de usuário e um token de acesso.
- Vá para o seu repositório no GitHub > Settings > Secrets and variables > Actions.
- Clique em New repository secret.
- Crie um segredo chamado
DOCKER_USERNAMEcom seu nome de usuário do Docker Hub. - Crie outro segredo chamado
DOCKER_TOKENcom seu token de acesso do Docker Hub.
O Workflow Completo
Agora, adicione o seguinte conteúdo ao seu arquivo .github/workflows/main.yml. Este é o coração do nosso guia sobre como implementar CI/CD com GitHub Actions e Docker de forma simples.
name: CI/CD Pipeline - Build and Push Docker Image
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout do código
uses: actions/checkout@v3
- name: Login no Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build e Push da imagem Docker
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/meu-app:latest
Vamos entender os passos:
- Checkout do código: Utiliza a action
actions/checkoutpara baixar o código do seu repositório para o ambiente de execução. - Login no Docker Hub: Usa a action
docker/login-actionpara se autenticar no Docker Hub usando os segredos que configuramos. - Build e Push da imagem: A action
docker/build-push-actioné a mais importante. Ela lê seuDockerfile, constrói a imagem e, comopush: true, a envia para o Docker Hub com a tag que definimos (lembre-se de trocarmeu-apppelo nome da sua aplicação).
Conclusão
E é isso! Com um Dockerfile e um arquivo YAML, você acabou de configurar um pipeline de CI/CD funcional. Agora, a cada vez que você fizer um push para a branch main, uma nova imagem Docker da sua aplicação será construída e publicada automaticamente. Você viu como implementar CI/CD com GitHub Actions e Docker de forma simples não é um bicho de sete cabeças.
Este é o ponto de partida. A partir daqui, você pode adicionar etapas de teste, fazer deploy em diferentes ambientes e expandir sua automação. Experimente no seu próximo projeto e veja como isso pode acelerar seu fluxo de trabalho!
Sobre Marcos Costa
Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.
Ver mais artigos

