@govbr-ds/release-config
v5.0.2
Published
Configuração compartilhada do semantic-release para projetos do GovBR-DS
Readme
GovBR-DS - Release Config
Objetivo
Compartilhar a política de versionamento, changelog e publicação entre os projetos do GovBR-DS.
O pacote fornece a configuração comum do Semantic Release. Ele não executa comandos específicos de Nx, não escolhe o registry do consumidor e não publica mensagens em serviços externos por conta própria.
Como instalar
Configurações para o Semantic Release.
Instale os seguintes pacotes:
npm install -D @govbr-ds/release-config
Como configurar
Crie um arquivo
release.config.jsna raiz do seu projeto e importe a configuração base:import releaseConfig from '@govbr-ds/release-config' export default releaseConfigPara adicionar ou sobrescrever alguma configuração, crie uma cópia da configuração base:
import releaseConfig from '@govbr-ds/release-config' export default { ...releaseConfig, plugins: [...releaseConfig.plugins, '@semantic-release/npm'], }Para configurações específicas de monorepos Nx, componha os plugins base com o fluxo Nx no projeto consumidor. A configuração publicada não executa comandos Nx por conta própria.
A ordem dos plugins define a ordem de execução dentro de cada etapa do Semantic Release.
Política de versionamento
O Semantic Release calcula a próxima versão a partir dos commits desde a última tag:
| Tipo | Uso | Versão padrão |
| ---------- | -------------------------------------------------- | ------------- |
| feat | Nova capacidade compatível com a API existente | minor |
| fix | Correção de comportamento | patch |
| docs | Atualização de documentação ou exemplos | patch |
| perf | Melhoria de desempenho sem quebra de API | patch |
| refactor | Reorganização interna sem mudança de comportamento | patch |
| removed | Remoção de API ou recurso público | major |
| revert | Reversão de uma mudança publicada | minor |
Os tipos build, chore, ci, lint, ops, test, wip e site são aceitos para manter o histórico consistente, mas não geram release automaticamente. deprecated aparece no changelog, porém também não gera versão por si só.
Uma mudança incompatível deve ser marcada como breaking change. Ela gera major independentemente do tipo:
feat(api)!: alterar contrato de autenticação
BREAKING CHANGE: o campo token agora é obrigatório e precisa ser enviado no cabeçalho Authorization.O escopo identifica a área alterada, não o impacto da versão:
fix(button): corrigir foco após o clique
feat(tokens): adicionar cor semântica de informaçãoNão use minor ou patch como escopo para forçar uma versão. O impacto deve ser expresso pelo tipo ou por uma breaking change.
Estrutura para monorepos Nx
O pacote exporta basePlugins para que o projeto consumidor acrescente seu próprio fluxo de preparação e publicação:
import { basePlugins, branches } from '@govbr-ds/release-config'
export default {
branches,
plugins: [
...basePlugins,
// Plugins específicos do monorepo entram aqui.
],
}Isso mantém a configuração publicada independente de Nx e evita que um projeto simples instale ou execute ferramentas que não utiliza.
Validação local
Antes de publicar uma release, valide a configuração sem executar prepare, publish ou notificações:
pnpm exec semantic-release --dry-runNo CI, use o lockfile congelado e a versão instalada no projeto:
pnpm install --frozen-lockfile
pnpm exec semantic-releaseMethod Date.prototype.toString called on incompatible receiver
A versão 14 do @semantic-release/release-notes-generator introduziu um bug com o conventional-changelog-conventionalcommits:
TypeError: Method Date.prototype.toString called on incompatible receiver [object Date]
at Proxy.toString (<anonymous>)
at [Symbol.toPrimitive] (<anonymous>)
at new Date (<anonymous>)
at Object.formatDate (file:///home/runner/work/clean-self-hosted-runner/clean-self-hosted-runner/node_modules/conventional-changelog-writer/dist/utils.js:8:12)
at defaultCommitTransform (file:///home/runner/work/clean-self-hosted-runner/clean-self-hosted-runner/node_modules/conventional-changelog-writer/dist/options.js:23:23)
at transformCommit (file:///home/runner/work/clean-self-hosted-runner/clean-self-hosted-runner/node_modules/conventional-changelog-writer/dist/commit.js:29:23)
at write (file:///home/runner/work/clean-self-hosted-runner/clean-self-hosted-runner/node_modules/conventional-changelog-writer/dist/writers.js:39:28)
at async nextAsync (node:internal/streams/from:182:33) {
pluginName: '@semantic-release/release-notes-generator'Os detalhes da causa não são importantes agora, mas caso esteja com o problema tente atualizar suas dependências para uma nova versão que pode já ter corrigido o bug.
Outras alternativas para corrigir o bug são:
- Incluir a dependência
"conventional-changelog-conventionalcommits": "^9.1.0"no seupackage.json. - Fazer o downgrade das suas dependências do semantic-release
Como contribuir?
Antes de abrir um Merge Request tenha em mente algumas informações:
- Esse é um projeto opensource e contribuições são bem-vindas.
- Para facilitar a aprovação da sua contribuição, escolha um título curto, simples e explicativo para o MR, e siga os padrões da nossa wiki.
- Quer contribuir com o projeto? Confira o nosso guia como contribuir.
Reportar bugs/necessidades
Você pode usar as issues para nos informar os problemas que tem enfrentado ao usar nossa biblioteca ou mesmo o que gostaria que fizesse parte do projeto. Por favor use o modelo que mais se encaixa na sua necessidade e preencha com o máximo de detalhes possível.
Nos comprometemos a responder a todas as issues
Precisa de ajuda?
Por favor não crie issues para fazer perguntas...
Use nossos canais abaixo para obter tirar suas dúvidas:
Site do GovBR-DS http://gov.br/ds
Usando nosso canal no discord https://discord.gg/U5GwPfqhUP
Padrão de commits
Para mais informações sobre o padrão de commits consulte a nossa Wiki.
Licença
Nesse projeto usamos a licença MIT.
