Lab prático de CI/CD com GitHub Actions, cobrindo lint, testes, build e publicação de imagem Docker.
Este repositório é um laboratório avançado que demonstra uma pipeline de CI/CD completa para uma aplicação Node.js com banco de dados (Prisma ORM) e containerização via Docker.
A ideia central é mostrar como automatizar todas as etapas de qualidade e entrega de software: desde a verificação de estilo de código até a publicação da imagem em um registry.
| Tecnologia | Papel |
|---|---|
| Node.js 20 | Runtime da aplicação |
| Express | Framework HTTP |
| Prisma ORM | Acesso ao banco de dados |
| Jest + Supertest | Testes automatizados |
| ESLint | Análise estática de código |
| Docker | Containerização |
| GitHub Actions | Pipeline CI/CD |
lab-cicd/
├── .github/
│ └── workflows/
│ ├── lint.yml # Job de lint
│ ├── test.yml # Job de testes
│ └── build.yml # Job de build da imagem Docker
├── prisma/
│ └── schema.prisma # Schema do banco de dados
├── src/
│ └── server.js # Aplicação Express
├── tests/ # Testes automatizados
├── .eslintrc.json # Regras de lint
├── Dockerfile # Imagem Docker
└── package.json
- Node.js 20+
- Docker (opcional)
# Clone o repositório
git clone https://github.com/webtech-network/lab-cicd.git
cd lab-cicd
# Instale as dependências
npm install
# Gere o Prisma Client
npx prisma generatenpm start # Inicia a aplicação (porta 3000)
npm test # Executa os testes com Jest
npm run lint # Verifica o código com ESLint# Build da imagem
docker build -t lab-cicd .
# Rodar o container
docker run -p 3000:3000 lab-cicdA pipeline é disparada em todo push ou pull_request para a branch main. Os jobs rodam em paralelo e são separados por responsabilidade:
push/PR para main
│
├──► [lint] → Verifica estilo e qualidade do código (ESLint)
│
├──► [test] → Executa testes Jest
│
└──► [build] → Builda a imagem Docker a partir do Dockerfile
| Job | Trigger | O que faz |
|---|---|---|
lint |
push / PR | Roda ESLint em src/ e tests/ |
test |
push / PR | Executa Jest e gera relatório de cobertura |
Os arquivos de workflow ficam em .github/workflows/. Veja a pasta para detalhes de cada job.
- CI (Integração Contínua): validação automática a cada commit
- Dependência entre jobs: build só roda após lint e test passarem
- Artefatos: relatórios de cobertura de testes são salvos no workflow
- Secrets: credenciais do Docker Registry gerenciadas com segurança