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.
