Branching e Releases do Open-Source (Open Source)
Releases regulares
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/Bugfix: releases toda semana, às segundas-feiras.
- Releases de segurança: serão realizadas fora da nossa cadência regular, dependendo da severidade.
As GitHub Actions são a fonte da verdade. Os releases são semiautomatizados. As etapas de um release regular são:
- Criar o branch de release a partir de
devoubugfixe 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 paradevebugfix, 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 e hotfix
Diagramas criados com plantUML. Encontre um editor web para PlantUML em https://www.planttext.com.
participant “Dev Branch” as dev #LightBlue participant “BugFix Branch” as bugfix #LightGreen participant “Release Branch” as release #LightGoldenRodYellow participant “Master Branch” as master #LightSalmon
== Minor Release (Monthly) ==
dev -> release: Create branch “release/2.x.0” release -> master: Merge note right: Official Release\n - Tag 2.x.0\n - Push 2.x.0 to DockerHub master –> bugfix: Merge master into bugfix to realign master –> dev: Merge master back into dev
== Patch/BugFix Release (Weekly) ==
bugfix -> release: Create branch “release/2.x.y” release -> master: Merge note right: Official Release\n - Tag 2.x.y\n - Push 2.x.y to DockerHub master -> bugfix: Merge master back into bugfix to realign master –> dev: Merge master into dev to realign
== Security Release (As Needed) ==
master -> release: Create branch “release/2.x.y” release -> master: Merge note right: Official Release\n - Tag 2.x.y\n - Push 2.x.y to DockerHub master –> bugfix: Merge master into bugfix to realign master –> dev: Merge master into dev to realign
@enduml
</div>