UNPKG

@starbemtech/star-node-stack-helper

Version:

A helper library for Node.js applications that provides utilities for AWS Secrets Manager integration and Elasticsearch/OpenSearch logging with enterprise-grade features.

271 lines (183 loc) 7.56 kB
# Release Process Este documento descreve o processo automatizado de release e publicação da lib `star-node-stack-helper` no npm. ## Pipeline de CI/CD O projeto utiliza GitHub Actions para automatizar o processo de build, teste e publicação. Existem quatro workflows principais: ### 1. Quality Check (`quality-check.yml`) Executa em pushes para `main` e `develop`, e em pull requests: - Auditoria de segurança das dependências - Verificação de dependências desatualizadas - Verificação de formatação de código - Linting com ESLint - Verificação de tipos TypeScript ### 2. Publish to NPM (`publish.yml`) Executa em: - Tags que começam com `v*` (ex: `v1.2.0`) - Pushes para `main` - Pull requests para `main` **Jobs:** - **Test**: Executa testes em múltiplas versões do Node.js (18, 20, 22) - **Publish**: Publica no npm apenas quando uma tag é criada - **GitHub Release**: Cria automaticamente um release no GitHub com informações detalhadas ### 3. Generate Changelog (`generate-changelog.yml`) Executa após a criação de tags: - Gera changelog baseado nos commits desde o último release - Atualiza o GitHub Release com as mudanças recentes - Filtra commits de desenvolvimento (chore, docs, etc.) ### 4. Release Notification (`release-notification.yml`) Executa quando um release é publicado: - Notifica sobre releases bem-sucedidos - Cria comentários informativos no repositório - Pode ser estendido para Slack, Discord, etc. ### 5. Dependabot Configuration (`.github/dependabot.yml`) Configurado para atualizações automáticas de dependências: - Verifica atualizações semanalmente (segunda-feira às 09:00) - Atualiza apenas dependências diretas e indiretas - Ignora atualizações major de pacotes críticos (@aws-sdk, typescript, etc.) - Cria pull requests com labels apropriados - Atribui reviewers automaticamente ### 6. Test Dependabot Configuration (`test-dependabot.yml`) Workflow para testar a configuração do Dependabot: - Verifica se os arquivos necessários existem - Testa a instalação de dependências - Verifica pacotes desatualizados - Executa semanalmente e manualmente ### 7. Verify Cache Configuration (`verify-cache.yml`) Workflow para verificar a configuração de cache: - Testa se o pnpm-lock.yaml está sendo reconhecido - Verifica se o cache do pnpm está funcionando - Valida a instalação de dependências - Executa em pushes para main e manualmente ### 8. Test PNPM Setup (`test-pnpm.yml`) Workflow para testar a configuração do pnpm: - Verifica se o pnpm está disponível no PATH - Testa comandos básicos do pnpm - Valida a instalação de dependências - Executa em pushes para main e manualmente ## Como Fazer um Release ### 1. Preparação ```bash # Certifique-se de estar na branch main git checkout main git pull origin main # Execute os testes localmente pnpm run test:ci pnpm run lint pnpm run build ``` ### 2. Versionamento Escolha o tipo de versão: - **Patch** (1.1.0 → 1.1.1): Correções de bugs - **Minor** (1.1.0 → 1.2.0): Novas funcionalidades (backward compatible) - **Major** (1.1.0 → 2.0.0): Breaking changes ```bash # Para patch pnpm run version:patch # Para minor pnpm run version:minor # Para major pnpm run version:major ``` ### 3. Criação da Tag ```bash # O comando acima já cria uma tag local # Agora faça push da tag para o GitHub git push origin --tags ``` ### 4. Publicação Automática Após o push da tag, o GitHub Actions irá: 1. Executar todos os testes 2. Fazer o build do projeto 3. Publicar no npm automaticamente 4. Criar um GitHub Release com informações detalhadas 5. Gerar changelog baseado nos commits 6. Enviar notificações sobre o release ## GitHub Release Automático O pipeline cria automaticamente um GitHub Release com: ### 📋 Informações Incluídas: - **Versão e nome do release** - **Link para o pacote no NPM** - **Link para documentação** - **Mensagem do commit principal** - **Informações de build** (Node.js version, data, commit hash) - **Instruções de instalação** - **Changelog automático** com mudanças recentes ### 🎨 Formato do Release: ````markdown ## 🚀 New Release: v1.2.0 ### 📦 Published to NPM Package: `star-node-stack-helper@1.2.0` ### 🔗 Links - [NPM Package](https://www.npmjs.com/package/star-node-stack-helper) - [Documentation](https://github.com/starbem/star-node-stack-helper#readme) ### 📋 What's Changed feat: add new AWS integration features ### 🏗️ Build Info - Node.js Version: 20 - Build Date: 2024-01-15T10:30:00Z - Commit: abc123def456 ### 📥 Installation ```bash npm install star-node-stack-helper@1.2.0 ``` ```` ### 📝 Recent Changes - feat: add new AWS integration features (abc123) - fix: resolve SSL configuration issue (def456) - docs: update README with examples (ghi789) ``` ## Configuração Necessária ### Secrets do GitHub Configure os seguintes secrets no repositório: 1. **NPM_TOKEN**: Token de acesso do npm - Gere em: https://www.npmjs.com/settings/tokens - Permissões: `Automation` com `Publish` habilitado ### Configuração do NPM O arquivo `.npmrc` já está configurado para: - Publicação pública (`access=public`) - Registry oficial do npm - Versões exatas das dependências ## Verificação do Release Após a publicação, verifique: 1. [NPM Package](https://www.npmjs.com/package/star-node-stack-helper) 2. [GitHub Releases](https://github.com/starbem/star-node-stack-helper/releases) 3. [GitHub Actions](https://github.com/starbem/star-node-stack-helper/actions) 4. Notificações no repositório ## Troubleshooting ### Erro de Autenticação NPM - Verifique se o `NPM_TOKEN` está configurado corretamente - Certifique-se de que o token tem permissões de publicação ### Falha nos Testes - Execute `pnpm run test:ci` localmente - Verifique se todas as dependências estão atualizadas - Corrija problemas de linting com `pnpm run lint:fix` ### Build Falhou - Execute `pnpm run build` localmente - Verifique se há erros de TypeScript - Certifique-se de que o `tsconfig.json` está correto ### GitHub Release não foi criado - Verifique se a tag foi criada corretamente - Confirme se o workflow `publish.yml` foi executado - Verifique os logs do GitHub Actions ### Erro de Cache de Dependências - **Erro**: "Some specified paths were not resolved, unable to cache dependencies" - **Causa**: Configuração incorreta do cache (usando package-lock.json em vez de pnpm-lock.yaml) - **Solução**: - Verifique se todos os workflows usam `cache: 'pnpm'` - Confirme que `cache-dependency-path` aponta para `**/pnpm-lock.yaml` (padrão glob) - Execute o workflow "Verify Cache Configuration" para testar - **Prevenção**: Sempre use `**/pnpm-lock.yaml` para projetos que usam pnpm em monorepos ### Erro de PNPM não encontrado - **Erro**: "Unable to locate executable file: pnpm" - **Causa**: Ordem incorreta dos steps (Node.js setup antes do pnpm setup) - **Solução**: - Configure pnpm ANTES do Node.js setup - Ordem correta: Checkout → Setup pnpm → Setup Node.js → Install dependencies - Execute o workflow "Test PNPM Setup" para verificar - **Prevenção**: Sempre siga a ordem: pnpm setup → Node.js setup ## Rollback Se necessário fazer rollback: 1. Despublique a versão no npm: `npm unpublish star-node-stack-helper@<version>` 2. Delete a tag: `git tag -d v<version> && git push origin :refs/tags/v<version>` 3. Delete o GitHub Release correspondente 4. Reverta o commit de versionamento se necessário ```