Automatizando Deploys de Sites com GitHub Actions: Um Guia Completo de CI/CD

github actions
hostoo

CI/CD (Integração Contínua/Entrega Contínua) é uma prática essencial no desenvolvimento moderno de software, permitindo a automação de testes, builds e deploys. Para projetos web, o GitHub Actions é uma ferramenta poderosa que simplifica a implementação de pipelines de CI/CD, garantindo atualizações rápidas e seguras.

Nesta matéria, exploraremos como configurar um fluxo automatizado de deploy para sites estáticos (HTML, CSS, JS) e dinâmicos (Node.js, PHP, etc.) usando GitHub Actions.


1. O que é CI/CD?

  • CI (Integração Contínua): Automatiza a construção e teste do código sempre que novas alterações são enviadas ao repositório.
  • CD (Entrega Contínua): Automatiza a implantação do código em um ambiente de produção ou staging após os testes.

Vantagens do CI/CD

✔ Redução de erros (testes automatizados)
✔ Deploys mais rápidos (sem intervenção manual)
✔ Maior confiabilidade (processo padronizado)


2. GitHub Actions: Conceitos Básicos

GitHub Actions permite criar workflows (fluxos de trabalho) em arquivos YAML (.yml) dentro do diretório .github/workflows/.

Componentes Principais

  • Workflow: Um processo automatizado definido em um arquivo YAML.
  • Job: Conjunto de etapas executadas em um mesmo ambiente.
  • Step: Tarefa individual dentro de um job (ex: instalar dependências).
  • Action: Bloco de código reutilizável para executar tarefas comuns.

3. Configurando CI/CD para um Site Estático

Vamos criar um workflow para fazer deploy de um site estático (HTML/CSS/JS) no GitHub Pages.

Passo a Passo

  1. Crie um repositório com seus arquivos estáticos.
  2. Adicione um workflow em .github/workflows/deploy.yml:
name: Deploy to GitHub Pages

on:
  push:
    branches: ["main"]  # Executa apenas no branch main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies (se necessário)
        run: npm install

      - name: Build (se usar geradores como Jekyll, Next.js, etc.)
        run: npm run build

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist  # Pasta de build
  1. Commit e push: O GitHub Actions executará automaticamente e publicará o site em https://<seu-usuario>.github.io/<repositorio>.

4. Configurando CI/CD para um Site Dinâmico (Node.js + Vercel/AWS)

Se o site usa um backend (Node.js, PHP, Python), podemos automatizar o deploy em serviços como VercelAWS, ou Heroku.

Exemplo: Deploy na Vercel

name: Deploy to Vercel

on:
  push:
    branches: ["main"]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install Vercel CLI
        run: npm install -g vercel

      - name: Deploy to Vercel
        run: vercel --prod --token ${{ secrets.VERCEL_TOKEN }}

Onde obter o VERCEL_TOKEN?

  1. Acesse Vercel Dashboard.
  2. Crie um token e adicione como segredo no GitHub (Settings > Secrets > New repository secret).

5. Boas Práticas para CI/CD

  • Testes automatizados: Adicione etapas de teste no workflow.
  • Ambientes separados: Use devstaging e production.
  • Rollback automático: Configure notificações em caso de falha.
  • Cache de dependências: Acelere os workflows com caching.

Conclusão

GitHub Actions é uma ferramenta versátil para automatizar deploys de sites, reduzindo erros manuais e acelerando o processo de entrega. Seja para sites estáticos ou dinâmicos, a automação de CI/CD garante maior eficiência e confiabilidade.

Experimente configurar seu próprio workflow e veja como o deploy se torna mais ágil! 🚀


Recursos Adicionais

Pronto para automatizar seus deploys? 💻⚡

GitLab Community Edition: A escolha ideal para equipes de desenvolvimento

alphimedia hospedagem de site barata
GitLab Community Edition

O GitLab Community Edition (CE) é uma plataforma de desenvolvimento de software completa e de código aberto, projetada para auxiliar desenvolvedores e equipes a otimizarem seus fluxos de trabalho. Ele oferece um conjunto abrangente de recursos, incluindo:

1. Controle de versão

  • Armazene e gerencie seus repositórios de código Git de forma segura e eficiente.
  • Rastreie alterações no código, reverta para versões anteriores e colabore com outros desenvolvedores em tempo real.

2. Rastreamento de problemas

  • Crie e gerencie tickets para registrar bugs, tarefas e solicitações de recursos.
  • Atribua tickets a membros da equipe, defina prazos e monitore o progresso.
  • Utilize o sistema de kanban para visualizar o fluxo de trabalho de forma eficiente.

3. Revisão de código

  • Revise as alterações de código feitas por outros desenvolvedores e forneça feedback construtivo.
  • Inicie discussões sobre o código e colabore para garantir a qualidade do código.
  • Utilize ferramentas de revisão automatizadas para identificar e corrigir problemas de código.

4. Integração e entrega contínuas (CI/CD)

  • Automatize a compilação, o teste e a implantação de seu código.
  • Defina pipelines de CI/CD para garantir que o código esteja sempre pronto para ser implantado.
  • Monitore o status das implantações e receba notificações em caso de falhas.

5. Segurança

  • Proteja seus repositórios de código com autenticação forte, controle de acesso baseado em função e criptografia.
  • Implemente pipelines de segurança para identificar e prevenir vulnerabilidades de software.
  • Monitore a atividade do seu repositório para detectar atividades suspeitas.

6. Outros recursos

  • Wiki para documentação do projeto e colaboração.
  • Placas de Kanban para gerenciamento de projetos e tarefas.
  • Rastreador de tempo para monitorar o tempo gasto em tarefas.
  • Chat integrado para comunicação em tempo real entre membros da equipe.

Vantagens do GitLab Community Edition

  • Gratuito e de código aberto: O GitLab CE é totalmente gratuito para download e uso, sem custos de licenciamento. Isso o torna uma opção acessível para equipes de todos os tamanhos.
  • Altamente personalizável: O GitLab CE é altamente personalizável, permitindo que você configure a plataforma para atender às suas necessidades específicas. Você pode instalar plugins, modificar o código-fonte e até mesmo hospedar a plataforma em seu próprio servidor.
  • Grande comunidade: O GitLab possui uma grande e ativa comunidade de usuários e desenvolvedores. Isso significa que você pode encontrar facilmente ajuda e suporte online se precisar.
  • Segurança robusta: O GitLab CE oferece recursos de segurança robustos para proteger seus repositórios de código e dados.

Desvantagens do GitLab Community Edition

  • Suporte limitado: O GitLab CE não oferece suporte técnico oficial. Isso significa que você precisará resolver problemas por conta própria ou buscar ajuda na comunidade.
  • Atualizações manuais: Você precisará atualizar o GitLab CE manualmente para obter os últimos recursos e correções de bugs.
  • Hospedagem própria: Se você deseja hospedar o GitLab CE em seu próprio servidor, precisará ter conhecimento técnico e recursos para fazê-lo.

Quem deve usar o GitLab Community Edition?

O GitLab Community Edition é uma ótima opção para equipes de desenvolvimento que desejam uma plataforma de desenvolvimento de software poderosa, gratuita e de código aberto. É ideal para equipes que:

  • São experientes em tecnologia e podem gerenciar sua própria infraestrutura.
  • Desejam ter controle total sobre sua plataforma de desenvolvimento de software.
  • Valorizam a flexibilidade e a personalização.
  • Não precisam de suporte técnico oficial.

Se você está procurando uma plataforma de desenvolvimento de software completa, segura e gratuita, o GitLab Community Edition é uma ótima opção a se considerar.