CI/CD para projetos JavaScript: GitHub Actions

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
```html

Introdução ao CI/CD e GitHub Actions para JavaScript

O desenvolvimento moderno de aplicações JavaScript em Node.js exige não apenas código de qualidade, mas também um processo confiável de entrega aos usuários. CI/CD (Continuous Integration / Continuous Deployment) é um conjunto de práticas que permite automatizar a construção, teste e implantação do código. Uma das ferramentas mais populares para implementar CI/CD é o GitHub Actions — um sistema de automação de fluxo de trabalho integrado na plataforma GitHub.

Neste artigo, vamos detalhar como configurar CI/CD para um projeto JavaScript (Node.js) usando GitHub Actions. Você aprenderá a criar pipelines, executar testes, realizar linting, compilar o projeto e implantá-lo automaticamente em um servidor ou hospedagem em nuvem. O material será útil tanto para desenvolvedores iniciantes quanto para engenheiros experientes que desejam otimizar o processo de desenvolvimento.

Fundamentos do GitHub Actions: estrutura e sintaxe

O GitHub Actions funciona com base em arquivos YAML, armazenados no diretório .github/workflows do seu repositório. Cada um desses arquivos define um ou mais workflows, que são acionados por eventos específicos: push, pull request, criação de release, etc.

A estrutura básica de um workflow inclui:

  • name — nome do pipeline;
  • on — evento que aciona a execução;
  • jobs — conjunto de tarefas executadas sequencialmente ou em paralelo;
  • steps — etapas dentro de cada tarefa (comandos, ações).

Vamos considerar um exemplo mínimo para um projeto Node.js:

name: Node.js CI

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

Neste exemplo, usamos actions integradas: actions/checkout para clonar o repositório e actions/setup-node para instalar a versão necessária do Node.js. O comando npm ci instala as dependências estritamente de acordo com o package-lock.json, e npm test executa os testes.

Configuração de teste e linting

Um pipeline CI/CD de qualidade para projetos JavaScript deve incluir verificação de código conforme padrões e testes automatizados. Vamos considerar um exemplo avançado usando ferramentas populares: ESLint para linting, Jest para testes e Prettier para formatação.

Adicione as dependências necessárias ao projeto:

npm install --save-dev eslint jest prettier eslint-config-prettier

Crie o arquivo de configuração .eslintrc.json:

{
  "env": {
    "node": true,
    "es2021": true,
    "jest": true
  },
  "extends": ["eslint:recommended", "prettier"],
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "rules": {
    "no-console": "warn",
    "semi": ["error", "always"]
  }
}

Agora atualize o arquivo do workflow:

name: Lint and Test

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

jobs:
  quality:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npx eslint .

      - name: Check formatting
        run: npx prettier --check .

      - name: Run tests
        run: npm test

      - name: Upload test coverage
```                

Blogs

Book Recommendations