Guia de Manutenção do CHANGELOG.md
Introdução
Este guia destina-se a todos os desenvolvedores que contribuem para um projeto no modelo "platform" (distribuído por vários repositórios). O objetivo é garantir que as mudanças em cada módulo sejam documentadas de forma clara e concisa no CHANGELOG.md
de cada repositório e no CHANGELOG.md
central localizado na pasta ./k8s/
do repositório main.
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:
Added
para novas funcionalidades,Changed
para mudanças em funcionalidades existentes,Deprecated
para funcionalidades que serão removidas em breve,Removed
para funcionalidades removidas,Fixed
para qualquer correção de bugs, eSecurity
em 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.md
localizado no diretório do módulo. 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.md
de cada módulo e consolide as informações relevantes noCHANGELOG.md
localizado na pasta./k8s/
. -
Foco no Usuário: No
CHANGELOG.md
central, 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.md
central antes 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
CHANGELOG
e 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.md
a 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 Sebralab-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.md
de um módulo é detalhado e técnico, enquanto oCHANGELOG.md
na 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
k8s
inclui 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
k8s
abrange 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 Sebralab-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.