Pipeline CI/CD para JavaScript: configuração do zero em 10 passos

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

Como parar de fazer deploy manualmente e não ter medo de commits

\n\n

Você já se sentou numa sexta-feira à noite, olhou para a produção e pensou: "Bem, parece que está tudo funcionando, e se eu rodar o build agora — nada vai quebrar?" Familiar? Deploy manual é como pular de paraquedas sem instrutor: até dá adrenalina, mas muitas vezes acaba mal.

\n\n

O pipeline CI/CD é o seu cabo de segurança automático. Ele mesmo constrói o projeto, executa os testes, verifica o código e, se estiver tudo ok — publica a atualização no servidor. Nada de "ai, esqueci de rodar o build" ou "por que os testes falharam, se funcionava localmente?".

\n\n

Neste artigo, vamos configurar do zero um pipeline CI/CD completo para um projeto JavaScript. Sem enrolação, com exemplos reais de código e configurações prontas. Vamos nessa!

\n\n

O que é um pipeline CI/CD e por que ele é necessário para um desenvolvedor JavaScript

\n\n

Vamos logo esclarecer os termos para não nos confundirmos.

\n\n

Continuous Integration (CI) — integração contínua. É quando cada commit seu é verificado automaticamente: o código passa por linters, testes, build. Se algo quebrou — você fica sabendo em 2 minutos, não em uma semana.

\n\n

Continuous Delivery (CD) — entrega contínua. Implantação automática do código pronto no servidor depois que todas as verificações de CI passaram com sucesso.

\n\n

Para projetos JavaScript, o CI/CD é especialmente importante. Por quê? Porque o ecossistema JS tem milhares de dependências que podem ser atualizadas a qualquer momento e quebrar seu código. A automação salva dessas surpresas.

\n\n

O que vamos configurar

\n
    \n
  • GitHub Actions — ferramenta gratuita para CI/CD (suficiente para a maioria dos projetos)
  • \n
  • Linter — verificação de estilo de código (ESLint)
  • \n
  • Testes — execução automática do Jest
  • \n
  • Build — compilação do projeto (Webpack ou Vite)
  • \n
  • Deploy — envio automático para o servidor ou hospedagem
  • \n
\n\n

Passo 1: Preparando o projeto

\n\n

Suponha que você já tenha um projeto JavaScript (React, Vue, Node.js — não importa). Se não tiver, crie um projeto simples para teste:

\n\n
mkdir my-ci-cd-project\ncd my-ci-cd-project\nnpm init -y\nnpm install --save-dev jest eslint
\n\n

Vamos adicionar um script básico no package.json:

\n\n
{\n  "scripts": {\n    "test": "jest",\n    "lint": "eslint src/",\n    "build": "webpack --mode production",\n    "deploy": "rsync -avz dist/ user@server:/var/www"\n  }\n}
\n\n

Agora temos comandos locais que o CI/CD executará automaticamente.

\n\n

Passo 2: Criando o workflow do GitHub Actions

\n\n

GitHub Actions é o cérebro do nosso pipeline. Tudo é gerenciado por arquivos YAML na pasta .github/workflows/.

\n\n

Crie o arquivo .github/workflows/ci-cd.yml:

\n\n
name: CI/CD Pipeline\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n    \n    steps:\n    - uses: actions/checkout@v3\n    \n    - name: Setup Node.js\n      uses: actions/setup-node@v3\n      with:\n        node-version: '18'\n        \n    - name: Install dependencies\n      run: npm ci\n      \n    - name: Run linter\n      run: npm run lint\n      \n    - name: Run tests\n      run: npm test\n      \n    - name: Build project\n      run: npm run build
\n\n

O que acontece aqui? A cada push no main ou develop, o GitHub inicia uma máquina virtual com Ubuntu, instala o Node.js 18, instala as dependências (instalação limpa com npm ci — mais rápida e confiável que npm install), verifica o código com linter, executa os testes e compila o projeto.

\n\n

Se qualquer etapa falhar — o pipeline para e você recebe uma notificação.

\n\n

Passo 3: Adicionando linter e testes

\n\n

ESLint e Jest são o padrão para JavaScript. Vamos configurá-los ta

Blogs

Book Recommendations