CI/CD para projetos JavaScript: GitHub Actions — guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que CI/CD é necessário para projetos JavaScript

O desenvolvimento de uma aplicação JavaScript moderna em Node.js é um processo complexo que envolve escrever código, testar, compilar e implantar. Sem automação, essas etapas são realizadas manualmente, o que leva a erros, atrasos e redução da qualidade do produto. CI/CD (Continuous Integration / Continuous Delivery) é uma prática de DevOps que automatiza a compilação, teste e implantação de código.

GitHub Actions é uma ferramenta integrada do GitHub que permite criar workflows para automatizar tarefas. Ela é ideal para projetos JavaScript, pois suporta Node.js, npm, Yarn e vários serviços populares. Neste artigo, vamos detalhar como configurar um pipeline CI/CD completo para seu projeto JavaScript usando GitHub Actions.

Você aprenderá: como executar testes, como compilar a aplicação, como fazer deploy em um servidor ou plataforma em nuvem e como evitar erros comuns.



Fundamentos do GitHub Actions para JavaScript

O que é GitHub Actions?

GitHub Actions é uma plataforma para automatizar workflows. Você descreve uma sequência de etapas em um arquivo YAML, que é colocado no repositório (geralmente .github/workflows/main.yml). Cada vez que um evento ocorre (por exemplo, push, pull request), o workflow é iniciado.

Um workflow consiste em jobs (tarefas) que são executados em um runner (máquina virtual). Para projetos JavaScript, geralmente é usado o runner Ubuntu, pré-instalado com Node.js.



Workflow básico para Node.js

Vamos começar com um workflow simples que executa testes a cada push ou pull request. Crie o arquivo .github/workflows/ci.yml:

name: CI para JavaScript

on: push: branches: [ main, develop ] pull_request: branches: [ main ]

jobs: test: runs-on: ubuntu-latest

strategy: matrix: node-version: [16.x, 18.x, 20.x]

steps: - uses: actions/checkout@v4 - name: Usar Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - run: npm test - run: npm run build --if-present

Este workflow faz o seguinte:

  • Triggers: é acionado ao fazer push em main/develop ou ao abrir um pull request para main.
  • Matrix de versões: testa no Node.js 16, 18, 20 — isso garante compatibilidade.
  • Cache: cache: 'npm' acelera a instalação das dependências.
  • Comandos: npm ci (instalação limpa), npm test (testes), npm run build (compilação, se existir).


Configuração de um pipeline CI/CD completo

Agora vamos complicar a tarefa: adicionar linting, verificação de segurança e deploy automático após testes bem-sucedidos.



Passo 1: Linting e formatação

Adicione um job para ESLint e Prettier. Isso garante um estilo de código uniforme:

jobs:  lint:    runs-on: ubuntu-latest    steps:    - uses: actions/checkout@v4    - uses: actions/setup-node@v4      with:        node-version: '18.x'        cache: 'npm'    - run: npm ci    - run: npm run lint    - run: npx prettier --check .

No package.json devem existir os scripts "lint" e "format". Exemplo:

{  "scripts": {    "lint": "eslint src/",    "format": "prettier --write ."  }}


Passo 2: Segurança das dependências

Use npm audit para verificar vulnerabilidades:

  security:    runs-on: ubuntu-latest    steps:    - uses: actions/checkout@v4    - run: npm audit --audit-level=high

Se

Blogs

Book Recommendations