Pipeline CI/CD para TypeScript: configuração do zero — guia passo a passo
\n\nVocê escreveu um projeto incrível em TypeScript. Código bonito, tipos rigorosos, lógica bem pensada. Mas toda vez que precisa atualizar o servidor, você manualmente executa o build, verifica se algo quebrou e reza para a produção não cair. Familiar?
\n\nEstá na hora de mudar isso. O pipeline CI/CD não é mágica para seniors com vinte anos de experiência. É uma ferramenta que automatiza a rotina: linting, testes, build e deploy. Um commit na branch e tudo vai para produção sozinho, sem estresse.
\n\nNeste artigo, vamos configurar do zero um pipeline CI/CD completo para um projeto TypeScript. Usando como exemplo o GitHub Actions — uma ferramenta gratuita e poderosa. Você aprenderá a:
\n- \n
- Adicionar linting e formatação automáticos \n
- Executar testes unitários e verificar tipos \n
- Compilar a aplicação e fazer deploy em um servidor remoto \n
- Evitar erros comuns na configuração de CI/CD \n
Pronto? Vamos nessa!
\n\nPor que CI/CD é criticamente importante para projetos TypeScript
\n\nTypeScript é uma linguagem com tipagem estática que compila para JavaScript. À primeira vista, isso dá uma falsa sensação de segurança: se o código compilou, significa que está funcionando. Mas, na prática, a compilação não detecta erros lógicos, problemas com API ou dependências quebradas.
\n\nCI/CD (Integração Contínua / Deploy Contínuo) resolve esse problema:
\n- \n
- Verificação automática: cada commit passa pelo pipeline — linting, testes, compilação. Se algo quebrar, você fica sabendo em um minuto, não em uma semana. \n
- Padrão unificado: toda a equipe segue as mesmas regras. Ninguém esquece de rodar os testes antes do push. \n
- Deploy rápido: chega de comandos manuais no servidor. Um merge na main e a atualização já está no site de produção. \n
Para TypeScript, CI/CD é especialmente importante porque erros de tipo podem aparecer apenas em tempo de execução se a compilação não for configurada corretamente. O pipeline previne isso.
\n\nPasso 1: Preparação do projeto TypeScript
\n\nAntes de configurar o CI/CD, certifique-se de que o projeto está pronto para automação. Aqui está o conjunto mínimo:
\n- \n
package.jsoncom scripts definidos \n tsconfig.json— configuração do TypeScript \n - ESLint e Prettier — para padronização do código \n
- Testes (Jest, Vitest ou Mocha) \n
Suponha que você tenha um projeto simples. A estrutura pode ser assim:
\n\nmy-ts-project/\n├── src/\n│ ├── index.ts\n│ └── utils.ts\n├── tests/\n│ └── utils.test.ts\n├── .eslintrc.json\n├── .prettierrc\n├── tsconfig.json\n├── package.json\n└── README.md\n\n\nCertifique-se de que os scripts estão definidos no package.json:
{\n "scripts": {\n "lint": "eslint src/ tests/ --ext .ts",\n "format": "prettier --check src/ tests/",\n "type-check": "tsc --noEmit",\n "test": "jest",\n "build": "tsc",\n "start": "node dist/index.js"\n }\n}\n\n\nAgora o projeto está pronto para CI/CD. Se faltar algo, adicione. O pipeline chamará exatamente esses comandos.
\n\nPasso 2: Escolha da plataforma CI/CD
\n\nExistem muitas opções: Jenkins, GitLab CI, CircleCI, Travis CI. Mas para iniciantes e projetos pequenos, o GitHub Actions é a melhor escolha:
\n- \n
- Integrado ao GitHub — não precisa configurar nada separadamente \n
- Limite gratuito: 2000 minutos por mês (para repositórios privados) \n
- Ecossistema enorme de actions prontas \n
- Sintaxe YAML clara \n
Se o seu código está no GitLab — use GitLab CI (a descrição é quase a mesma). Mas neste artigo, trabalharemos com GitHub.
\n\nPasso 3: Criação do pipeline CI/CD — primeiro arquivo
\n\nNa raiz do projeto, crie a pasta .github/workflows/ e, dentro dela, o arquivo ci.y