Guia de Manutenção do CHANGELOG.md
Introdução
Este guia destina-se a todos os desenvolvedores que contribuem para um projeto em um repositório de um módulo. O objetivo é garantir que as mudanças em cada módulo sejam documentadas de forma clara e concisa no arquivo CHANGELOG.md de cada repositório.
Por que manter um CHANGELOG?
Um CHANGELOG.md é um arquivo que contém uma lista cronológica de todas as alterações significativas feitas no projeto para cada versão. Isso inclui novas funcionalidades, correções de bugs, e melhorias de performance ou código. Manter este arquivo ajuda não só os desenvolvedores a acompanhar as mudanças, mas também os usuários e stakeholders a entender o que foi alterado e quais são os benefícios dessas mudanças.
Estrutura do CHANGELOG
O arquivo CHANGELOG.md deve seguir o Versionamento Semântico (MAJOR.MINOR.PATCH), onde:
- MAJOR versão quando você faz mudanças incompatíveis na API,
- MINOR versão quando você adiciona funcionalidades de uma maneira compatível com versões anteriores, e
- PATCH versão quando você faz correções de bugs compatíveis com versões anteriores.
Cada entrada no CHANGELOG deve conter:
- A versão do projeto.
- A data de lançamento no formato
AAAA-MM-DD. - Uma lista de mudanças, classificadas por tipo:
Addedpara novas funcionalidades,Changedpara mudanças em funcionalidades existentes,Deprecatedpara funcionalidades que serão removidas em breve,Removedpara funcionalidades removidas,Fixedpara qualquer correção de bugs, eSecurityem caso de correções de vulnerabilidades.
Manutenção do CHANGELOG
Para Desenvolvedores
-
Documentando mudanças locais: Para cada alteração significativa que você fizer em um módulo, adicione uma entrada no
CHANGELOG.mdlocalizado no diretório raiz do repositório .Use o formato mencionado acima para registrar sua mudança. -
Detalhes são importantes: Seja específico. Mencione como a mudança afeta o projeto, por que ela é necessária, e como ela se encaixa no contexto maior do projeto.
-
Referências: Quando possível, inclua a referência à issue do GitLab que sua mudança está endereçando (exemplo:
Closes #123).
Para Mantenedores do Projeto
-
Revisão e Consolidação: Antes de uma nova versão do projeto como um todo ser lançada, revise os
CHANGELOG.mdde cada módulo e consolide as informações relevantes noCHANGELOG.mdlocalizado na pasta raiz do repositório. -
Foco no Usuário: No
CHANGELOG.mdcentral, concentre-se em descrever as funcionalidades e mudanças de uma perspectiva de usuário, destacando melhorias, correções e novas funcionalidades que agreguem valor ao projeto. -
Atualização Pré-Lançamento: Sempre atualize o
CHANGELOG.mdantes de um lançamento, garantindo que todas as alterações dos módulos estejam refletidas.
Exemplo de Entrada no CHANGELOG
## [1.1.0] - 2023-11-03
### Added
- Função de login via biometria no módulo Client Front (Closes #42).
### Changed
- Atualização do Helm Chart para suportar a nova estrutura de containers.
## [1.0.1] - 2023-11-01
### Fixed
- Correção da vulnerabilidade de segurança no SAS Token Middleware.
### Security
- Atualizações de dependências críticas para o Core Django.
Evite misturar correções de bugs e novas funcionalidades em uma única entrada. Isso pode dificultar a compreensão das mudanças por parte dos usuários finais e atrapalha as contagens e emissão de faturas ao cliente. Em vez disso, separe as mudanças em entradas separadas, classificadas por tipo.
Conclusão
O CHANGELOG.md é um documento vital para o projeto e deve ser mantido com a mesma seriedade que o código-fonte. Cumprir com este guia ajudará a equipe a manter um histórico consistente e útil, que beneficia tanto os desenvolvedores quanto os usuários finais.
Práticas Recomendadas
- Consistência: Use uma linguagem e um formato consistentes em todas as entradas do
CHANGELOG. Evite usar abreviações ou jargões que possam ser confusos para os usuários finais. - Automatização: Considere usar ferramentas para automatizar o processo de geração do changelog com base em mensagens de commit, tags e merge requests.
- Revisão Cruzada: Encoraje a revisão cruzada de entradas no changelog por outros desenvolvedores para minimizar erros e omissões.
- Comunicação: Certifique-se de que todos os membros da equipe entendam a importância de manter o
CHANGELOGe saibam como fazer isso corretamente.
Ferramentas e Recursos
Algumas ferramentas que podem ajudar na manutenção do CHANGELOG:
- git-chglog: Uma ferramenta para gerar
CHANGELOG.mda partir de tags e mensagens de commit do Git. - standard-version: Uma ferramenta para versionamento semântico, que automatiza o processo de versionamento e geração de changelog.
- Keep a Changelog: Um site que fornece mais orientações sobre como manter um
CHANGELOG.
Conclusão
Manter um CHANGELOG.md detalhado e bem organizado é uma parte essencial do gerenciamento de projetos de software. Isso não apenas melhora a comunicação dentro da equipe, mas também ajuda a construir confiança com os usuários finais, que podem facilmente acompanhar o progresso e entender as mudanças implementadas.
Certifique-se de atualizar este guia conforme necessário para refletir as melhores práticas e quaisquer novas ferramentas ou processos adotados pela equipe.
Boas práticas de codificação e documentação!
Diferenças entre o CHANGELOG de um Módulo e o CHANGELOG na pasta k8s
Introdução
No ecossistema de um projeto "platform", a documentação de mudanças é mantida tanto em nível de módulo quanto no nível do projeto. Este documento esclarece a distinção entre o CHANGELOG.md de um módulo individual e o CHANGELOG.md localizado na pasta ./k8s/ do repositório principal.
CHANGELOG de um Módulo
Definição
O CHANGELOG.md de um módulo é um arquivo dedicado a documentar as mudanças, melhorias, correções de bugs e atualizações que são aplicadas especificamente àquele módulo.
Propósito
- Foco no Desenvolvimento: Acompanhar o progresso técnico e as alterações detalhadas do módulo em particular.
- Histórico de Versões: Registrar cada versão incremental do módulo com base em correções, melhorias e novas funcionalidades.
- Documentação para Desenvolvedores: Servir como uma referência imediata para desenvolvedores que trabalham ou dependem do módulo.
Conteúdo
- Detalhes técnicos específicos das mudanças.
- Referências a commits, pull requests ou issues específicas do módulo.
- Versões semânticas (MAJOR.MINOR.PATCH) aplicadas ao contexto do módulo.
CHANGELOG na pasta k8s
Definição
O CHANGELOG.md localizado na pasta ./k8s/ do repositório principal (Main) é o arquivo que captura uma visão de alto nível das mudanças em toda a plataforma Sebraelab-platform.
Propósito
- Visão do Projeto: Oferecer uma visão geral das funcionalidades implementadas, melhorias e correções em todo o projeto.
- Coordenação de Releases: Documentar a integração dos diferentes módulos e como eles funcionam juntos em uma determinada versão do projeto.
- Foco no Usuário e Deploy: Destacar mudanças que afetam a implementação e o uso do projeto como um todo, incluindo atualizações no Helm Chart e na infraestrutura de Kubernetes.
Conteúdo
- Sumário das alterações nos módulos que têm um impacto direto no funcionamento integrado da plataforma.
- Informações sobre atualizações de dependências e configurações de infraestrutura.
- Versões semânticas representando lançamentos significativos do projeto total, não apenas de um módulo isolado.
Principais Diferenças
- Granularidade: O
CHANGELOG.mdde um módulo é detalhado e técnico, enquanto oCHANGELOG.mdna pastak8sé mais generalista e focado em como as partes se integram. - Público-Alvo: O público do changelog do módulo são principalmente desenvolvedores, enquanto o da pasta
k8sinclui gestores de projeto, operadores de DevOps e stakeholders. - Frequência de Atualização: O changelog do módulo é atualizado frequentemente com cada subversão, já o da pasta
k8sé atualizado em marcos mais significativos do projeto. - Escopo de Conteúdo: O changelog do módulo cobre mudanças específicas daquele componente, enquanto o da pasta
k8sabrange mudanças que impactam a operacionalização e entrega do projeto completo.
Conclusão
Entender a distinção entre o CHANGELOG.md de um módulo e o CHANGELOG.md da pasta k8s é crucial para a documentação efetiva e comunicação clara dentro da equipe do projeto Sebraelab-platform. Cada um tem um papel vital na gestão do projeto e na entrega de informações relevantes aos seus respectivos públicos.
Mantenha ambos os arquivos atualizados e consistentes com as práticas documentadas para garantir que todas as partes interessadas estejam informadas e alinhadas com o desenvolvimento do projeto.