image

Bootcamps ilimitados + curso de inglês

80
%OFF
Article image
Fernanda Araujo
Fernanda Araujo08/04/2025 03:08
Compartilhe
Microsoft Certification Challenge #3 DP-100Recomendados para vocêMicrosoft Certification Challenge #3 DP-100

CI/CD para Devs: Automatizando com GitHub Actions, Packages e Pages

  • #GitHub

Introdução

A automação de processos é uma necessidade em projetos modernos de software. Neste artigo, exploraremos como o GitHub pode ser uma poderosa plataforma de CI/CD por meio de Actions, Packages e Pages. Abordaremos desde conceitos básicos até práticas avançadas, mostrando como otimizar a entrega contínua com eficiência e controle.

✅ O Que é CI/CD?

🔹 CI – Integração Contínua:

Integra o código de todos os desenvolvedores em um repositório compartilhado várias vezes ao dia.

🔹 CD – Entrega e/ou Deploy Contínuo:

Automatiza o envio do código testado para ambientes de homologação ou produção.

🔹 Objetivo da prática:

Reduzir erros, acelerar entregas e padronizar builds e deploys.

⚙️ Como Funciona o CI/CD com GitHub?

🔹 Utiliza GitHub Actions para definir fluxos de trabalho automatizados.

🔹 Usa Packages para distribuir bibliotecas e containers.

🔹 Permite publicação de sites estáticos com Pages.

🔹 Integra com ferramentas externas como Docker, AWS, Vercel, Firebase, etc.

🔧 GitHub Actions: Automatizando com Fluxos de Trabalho

🔹 O que é o GitHub Actions?

  • Plataforma nativa do GitHub para automatizar tarefas com arquivos .yml
  • Funciona com gatilhos: push, pull request, tag, cron (horários), etc.
  • Possui marketplace de actions prontas

🔹Estrutura de uma Action

  • Workflows: definem o processo
  • Jobs: etapas dentro de um workflow
  • Steps: comandos individuais
yml

name: CI Pipeline
on: [push]
jobs:
build:
  runs-on: ubuntu-latest
  steps:
  - uses: actions/checkout@v3
  - name: Instalar dependências
    run: npm install
  - name: Rodar testes
    run: npm test

🔹 Ações Avançadas

  • Deploy automático em ambientes de homologação
  • Integração com DockerHub para containers
  • Rodar linters, testes unitários e e2e
  • Build automático para Android/iOS/Web
  • Utilizar matrix strategy para múltiplas versões de Node, Python etc.

🔹 Boas Práticas

  • Separar jobs por responsabilidade (build, test, deploy)
  • Utilizar secrets com segurança (GITHUB_TOKEN, AWS_ACCESS_KEY)
  • Usar cache (actions/cache) para acelerar builds

📦 GitHub Packages: Distribuindo Códigos e Containers

🔹 O que é GitHub Packages?

  • Serviço de hospedagem de pacotes integrado ao GitHub
  • Suporta npm, Docker, NuGet, Maven, RubyGems, entre outros

🔹 Vantagens

  • Permite publicar libs privadas ou públicas
  • Integra-se nativamente com repositórios
  • Controle de versão e permissões simplificados

🔹 Exemplo: Publicar um pacote npm

bash

npm login --registry=https://npm.pkg.github.com
npm publish
  • Utilizar .npmrc com token de autenticação
  • Possível integrar a GitHub Action para publicar em cada release

🔹 Usos avançados

  • Publicar imagens Docker com tags latest, dev, prod
  • Utilizar com GitHub Actions para CI/CD completo
  • Configurar retenção e limpeza automática de versões antigas

🌐 GitHub Pages: Publicando Sites Estáticos com Git

🔹 O que é GitHub Pages?

  • Serviço gratuito para publicação de sites estáticos diretamente de um repositório
  • Muito usado para documentações, portfólios, dashboards, landing pages

🔹 Como publicar:

  1. Criar uma branch chamada gh-pages ou configurar no menu Pages
  2. Gerar conteúdo (ex: com React/Vue buildado ou site HTML)
  3. Commitar a pasta build ou dist
  4. Configurar URL personalizada (opcional)

🔹 Exemplos práticos:

  • Publicar documentação de API com Swagger
  • Gerar portfólios de projetos
  • Dashboard com gráficos de CI/CD
  • Documentar bibliotecas com Docusaurus ou VitePress

🔹 Dica Avançada:

Automatizar deploy com GitHub Actions:

yml

name: Deploy para GitHub Pages
on:
push:
  branches: [main]
jobs:
deploy:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - run: npm install && npm run build
    - uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./dist

🚨 Desafios Comuns e Como Evitar

🔹 Tokens e segredos mal configurados

🔹 Loops infinitos em workflows mal escritos

🔹 Excesso de triggers causando builds desnecessários

🔹 Repositórios bagunçados com artefatos de build no controle de versão

🧭 Estratégias de CI/CD para Devs

🔹 Testar antes de mergear (com Pull Request Checks)

🔹 Criar workflows reutilizáveis com workflow_call

🔹 Validar ambientes com env e condicionais (if)

🔹 Dividir workflows grandes em arquivos separados

🔹 Fazer deploy blue-green ou canário com branches

🔹 Usar containers de build personalizados

📌 Boas Práticas para GitHub CI/CD

  • Padronizar nome de workflows: ci.yml, deploy.yml, etc.
  • Usar badges no README:
  • ![CI](https://github.com/user/repo/actions/workflows/ci.yml/badge.svg)
  • Criar pasta .github/workflows bem organizada
  • Evitar comitar arquivos node_modules, dist, logs
  • Documentar como rodar localmente os scripts que estão no CI

📚 Referências

💡 Conclusão

GitHub é mais do que um lugar para armazenar código. Com Actions, Packages e Pages, qualquer dev pode automatizar builds, distribuir pacotes e publicar conteúdos com facilidade e poder. Dominar essas ferramentas é dar um passo rumo à excelência no desenvolvimento moderno.

image

Compartilhe
Recomendados para você
Microsoft 50 Anos - GitHub Copilot
Microsoft AI for Tech - GitHub Copilot
Microsoft 50 Anos - Prompts Inteligentes
Comentários (2)
Fernanda Araujo
Fernanda Araujo - 09/04/2025 01:52

Muito obrigada pelo feedback! 😊

Fico feliz em saber que o conteúdo está ajudando outros devs a explorarem melhor o GitHub como plataforma de CI/CD. Sobre os testes, acho essencial integrá-los desde o início do projeto, eles ajudam a garantir qualidade contínua, evitam retrabalho e trazem mais confiança no deploy automatizado. É um passo simples que faz toda a diferença a longo prazo! 🚀 @DIOCommunity



DIO Community
DIO Community - 08/04/2025 15:15

Fernanda, seu artigo sobre CI/CD e GitHub está fantástico! Você trouxe uma visão clara e prática sobre como o GitHub pode ser utilizado como uma plataforma de CI/CD por meio de Actions, Packages e Pages. A explicação sobre as vantagens e boas práticas é excelente e com certeza ajudará muitos desenvolvedores a adotarem essas ferramentas para otimizar seus fluxos de trabalho.

Na DIO, temos muitos alunos que buscam aprimorar suas habilidades em automação e deploy contínuo, e seu artigo é uma ótima referência para quem deseja começar a integrar essas práticas em seus projetos. A abordagem de usar GitHub Actions para automatizar os testes e deploys, por exemplo, é algo que estamos incentivando fortemente em nossos bootcamps.

Qual sua opinião sobre a importância de integrar testes automatizados no pipeline de CI/CD desde o início de um projeto?

Recomendados para vocêMicrosoft Certification Challenge #3 DP-100