Branching e Releases do Open-Source (Open Source)
Releases regulares
Todos os releases saem do branch dev. A equipe do DefectDojo busca manter a seguinte cadência:
- Releases menores (minor): pelo menos uma vez por mês, na primeira segunda-feira do mês.
- Patch: releases toda semana, às segundas-feiras.
- Releases de segurança: podem ser realizadas fora da nossa cadência regular, dependendo da severidade. Elas também saem de
dev.
Não existe um branch separado para correções de bugs nem um branch de hotfix a partir de master. Todo pull request, seja correção ou funcionalidade, é direcionado a dev.
As GitHub Actions são a fonte da verdade. Os releases são semiautomatizados. As etapas de cada release são:
- Criar o branch de release a partir de
deve preparar um PR contramaster(detalhes) –> Um mantenedor verifica e faz o merge manual do PR - Criar a tag, emitir o draft release e fazer o build+push do docker (detalhes) –> Um mantenedor ajusta as notas do release-drafter e publica o release
- É criado um PR para fazer o merge de
masterde volta paradev, realinhando os branches (detalhes)
Releases de segurança
PRs relacionados a questões de segurança são feitos por meio de security advisories, que oferecem uma forma de trabalhar de modo privado no código sem divulgar prematuramente as vulnerabilidades.
Modelo de release
Diagramas criados com plantUML. Encontre um editor web para PlantUML em https://www.planttext.com.
participant “Dev Branch” as dev #LightBlue participant “Release Branch” as release #LightGoldenRodYellow participant “Master Branch” as master #LightSalmon
== Minor Release (Monthly) ==
dev -> release: Create branch “release/merge-dev-into-master-2.x.0” release -> master: Merge note right: Official Release\n - Tag 2.x.0\n - Push 2.x.0 to DockerHub master –> dev: Merge master back into dev
== Patch Release (Weekly) ==
dev -> release: Create branch “release/merge-dev-into-master-2.x.y” release -> master: Merge note right: Official Release\n - Tag 2.x.y\n - Push 2.x.y to DockerHub master –> dev: Merge master back into dev
@enduml
</div>