Dev & Code

CI/CD: Como Automatizar o Deploy do Código (GitHub Actions)

O CI/CD (Continuous Integration / Continuous Deployment) é o santo graal do DevOps. É o que permite que grandes empresas lancem novas funcionalidades 50 vezes por dia sem quebrar o sistema.

Se você tem um projeto no Git e um servidor VPS rodando, o processo manual de deploy (buildar, compactar, subir por FTP ou SSH) é o ponto mais fraco. O erro é inevitável.

Na **AtiveSite**, eliminamos esse erro. Vamos usar o **GitHub Actions** (gratuito) para criar um pipeline que funciona com a regra de ouro: *O código só vai para o servidor se passar em todos os testes*.

O Pipeline: A Fábrica de Softwares

Fase Descrição Ferramenta
1. Integração Contínua (CI) Automação de testes de unidade e verificação de sintaxe. GitHub Actions, Jenkins, Travis CI.
2. Entrega Contínua (CD) Build da aplicação (gerar binário, criar imagem Docker). Docker Hub, Docker Compose.
3. Deploy Contínuo (CD) Login no servidor e execução do comando de atualização. SSH, Coolify, Kubernets.

A Arquitetura do GitHub Actions

O GitHub Actions usa arquivos YAML que vivem dentro da pasta `.github/workflows` do seu repositório Git. O arquivo define o “Job” (Trabalho) a ser executado.

Exemplo de Roteiro (Pipeline Simples):

name: Deploy na Produção

on:
  push:
    branches:
      - main  # Dispara quando há um Push na branch principal

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest  # Roda em um servidor virtual Linux
    steps:
      - uses: actions/checkout@v4  # Pega o código do seu repo
      - name: Setup Python
        uses: actions/setup-python@v5 
        with:
          python-version: '3.11'
      - name: Rodar Testes de Unidade
        run: pip install -r requirements.txt && python run_tests.py
      - name: Deploy via SSH
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }} 
          username: root
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/meu-app
            git pull origin main
            docker compose up -d --build

Você só precisa configurar suas credenciais (SSH Keys) como segredos no GitHub. A partir daí, qualquer `git push` para a `main` branch aciona este robô que faz o resto.

FAQ: Dúvidas Comuns sobre CI/CD

1. Qual é o maior risco do CI/CD?

O maior risco é a **segurança**. As credenciais de acesso ao seu servidor (SSH Keys, tokens de API) são armazenadas no GitHub. Se o repositório for roubado, o invasor tem acesso ao seu servidor. A solução é usar ‘Secrets’ criptografados e chaves de acesso de uso único.

2. O CI/CD é só para código complexo?

Não. É útil para qualquer projeto. Até mesmo para um site estático: o CI/CD testa se o código HTML/CSS está válido e envia o resultado para o Vercel ou Netlify automaticamente.

3. O que acontece se os testes falharem?

O pipeline para imediatamente. O código não é enviado para o servidor. O GitHub envia uma notificação (e-mail ou Slack) para o time informando que a integração falhou. Isso é a proteção principal do CI/CD.

4. Onde eu rodo os ‘testes’ (Testes de Unidade)?

Os testes rodam dentro do ambiente temporário criado pelo GitHub Actions. Você escreve os testes no seu código (usando Jest, Pytest, etc.), e o pipeline apenas executa o comando para rodar esses testes.

5. CI/CD substitui o Git?

Não. O Git (o repositório) é a fonte de onde o CI/CD puxa o código para iniciar o processo. Sem Git, não há CI/CD.

6. Posso usar CI/CD com o WordPress?

Sim, mas é mais complexo. Você pode configurar o pipeline para, após o teste, sincronizar os arquivos do tema/plugin via SSH (FTP não é recomendado) com o servidor de produção.

7. Qual a diferença entre ‘Continuous Delivery’ e ‘Continuous Deployment’?

**Delivery** (Entrega) significa que o código está pronto, testado e empacotado, esperando apenas um clique humano para ir para a produção. **Deployment** (Deploy) significa que o código vai para a produção automaticamente, sem intervenção humana.

8. O que é ‘Rollback’ em CI/CD?

É a capacidade de voltar para a versão anterior do código instantaneamente, caso o deploy mais recente cause um erro fatal na produção. Plataformas como o Docker facilitam muito o Rollback.

Conclusão

O CI/CD transforma a entrega de código de um evento caótico e manual em um processo previsível, seguro e rápido. É o investimento de tempo que paga o maior dividendo em termos de estabilidade e confiança do cliente.

CI/CD: Como Automatizar o Deploy do Código (GitHub Actions)

Tags para suas próximas buscas:
CI/CD, GitHub Actions, DevOps, Continuous Integration, Continuous Deployment, Pipeline YAML, Docker Deploy, Automação, Testes de Unidade, Deploy Contínuo, VPS Setup, Git Hooks.

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo