CI/CD com GitHub Actions: Guia Passo a Passo para Automação de Build, Testes e Deploy

CI/CD com GitHub Actions: Guia Passo a Passo para Automação de Build, Testes e Deploy






ci-cd-com-github-actions-passo-a-passo.md


DevOps · Web

CI/CD com GitHub Actions: passo a passo.md

Guia técnico, direto ao ponto, para você construir pipelines confiáveis em projetos modernos sem complicação.

1. Visão geral do fluxo de CI/CD com GitHub Actions

Este artigo apresenta um caminho prático para configurar um fluxo de integração contínua e entrega contínua usando GitHub Actions. O foco é entregar feedback rápido, manter o código saudável e facilitar o deploy de versões estáveis para produção.

  • Definição de gatilhos (push, pull_request) para rodar o fluxo nos momentos certos.
  • Execução de etapas de build, testes e validação de qualidade do código.
  • Uso de matrix para validar diferentes versões de runtime e ambientes.
  • Etapas de deploy seguras com controles de ambiente e condições de sucesso.

2. Configuração inicial do repositório e do workflow

Crio o repositório com um workflow básico para validar o código sempre que houver mudanças no main ou em pull requests. A ideia é ter uma linha do tempo clara: build, testes e, quando apropriado, deploy.

Passos recomendados:

  • Crie o diretório .github/workflows no seu repositório e adicione um arquivo YAML, por exemplo ci.yml.
  • Defina gatilhos para push em main e para pull_request para manter feedback rápido durante o desenvolvimento.
  • Defina um job de build com um runner adequado e inclua etapas de checkout, setup do ambiente, instalação de dependências e testes.

Exemplo de workflow (parcial) para um projeto Node.js:


name: CI
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - '**'

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14.x, 16.x]
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test --if-present
      - name: Build
        run: npm run build --if-present

Observação: este é um template de ponto de partida. Adapte os passos conforme a sua stack (Python, Ruby, Java, etc.) e as suas necessidades de build e teste.

3. Aprimoramentos: matrix, cache e segredos

Para melhorar a cobertura de qualidade e reduzir o tempo de feedback, incluo matrix de versões, cache de dependências e uso seguro de segredos:

  • Matrix de versões: validação em diferentes runtimes ou versões de dependências.
  • Caching de dependências: acelera builds subsequentes usando actions/cache ou mecanismos nativos da linguagem.
  • Segredos: armazeno chaves sensíveis em GitHub Secrets e acesso via ${‘${{ secrets.NOME_DO_SEGREDO }}’ } nos passos.

Exemplo de adição ao workflow para cache de npm e uso de secrets (trecho conceitual):


- name: Cache dependencies
  uses: actions/cache@v4
  with:
    path: node_modules
    key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

- name: Deploy to production
  if: github.ref == 'refs/heads/main'
  env:
    API_KEY: ${{ secrets.API_KEY_PROD }}
  run: |
    echo "Deploy usando API_KEY_PROD..."
    # comandos de deploy aqui

4. Deploy, práticas recomendadas e observabilidade

Para manter o pipeline estável, ativamos regras de proteção de ambiente, aprovadores e etapas de deploy apenas a partir de branches estáveis. Em produção, é comum exigir aprovação manual ou gates de qualidade antes do deploy final.

  • Env-driven deploy: use ambientes/production com checks específicos antes do deploy.
  • Boas práticas de build: gerar artefatos apenas com builds bem-sucedidos; versionar artifacts se aplicável.
  • Observabilidade: inclua logs de build e resultados dos testes, e produza artefatos de relatório quando útil.

Resumo: com um workflow bem estruturado, você obtém feedback rápido, validação de qualidade e deploy controlado, reduzindo retrabalho e aumentando a confiança no ciclo de vida do código.

Gostou? Continue aprendendo comigo

Este guia é apenas o começo. Explore conteúdos complementares para aprofundar tópicos de pipelines, qualidade de código e práticas de entrega.

Ver mais artigos