Versionamento e release¶
Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06
Fontes de versão¶
| Lugar | O que representa | Quem atualiza |
|---|---|---|
gradle.properties version=X.Y.Z |
Versão do projeto (SemVer) | Manual no bump |
| CHANGELOG.md | Histórico legível de mudanças | Manual no bump |
Tag Git vX.Y.Z |
Snapshot imutável da release | Manual no bump |
src/main/resources/application.yml openapi.info.version |
Versão do contrato HTTP (/api/**) |
Manual só quando há breaking change na API REST |
Env SENTRY_RELEASE (Coolify) |
Tag de release nos eventos Sentry | Manual no Coolify ao fazer deploy |
Decisão de design: openapi.info.version é desacoplado do project.version.
A versão da API REST tem semântica própria — só sobe quando o contrato HTTP
quebra (endpoint removido, schema de body alterado de forma incompatível, etc.).
Mudanças internas do app (UI, refactor, login) não mexem nela.
Convenção de commits¶
Conventional Commits leve (já em uso no projeto):
feat: ...— nova funcionalidade → minor bumpfix: ...— correção de bug → patch bumpchore: ...,docs: ...,test: ...,refactor: ...— sem bump (a menos que acumule)feat!: ...ouBREAKING CHANGE:no corpo → major bump
Decisão do tipo de bump (SemVer)¶
Versão atual: 1.0.0. Regras SemVer canônicas (post-1.0):
| Mudança | Bump | Exemplo |
|---|---|---|
| Bug fix | patch | 1.0.0 → 1.0.1 |
| Feature compatível | minor | 1.0.0 → 1.1.0 |
| Breaking change (API REST quebrada, schema DB incompatível, env obrigatória nova) | major | 1.0.0 → 2.0.0 |
Processo de release (passo-a-passo)¶
Suponha que vai sair da 1.0.0 para 1.1.0 (minor bump com feat: ...).
1. Branch limpa¶
git switch master
git pull --ff-only
git status # tem que estar limpo
(Ou, se a release sai de uma feature branch antes do merge, faça o bump na branch e merge — o processo é o mesmo.)
2. Atualizar gradle.properties¶
version=1.1.0
3. Atualizar CHANGELOG.md¶
- Mover entradas de
[Unreleased]para uma nova seção[1.1.0] - YYYY-MM-DD(data de hoje). - Limpar
[Unreleased](deixar vazio para o próximo ciclo). - Atualizar os links de comparação no rodapé:
[Unreleased]: https://fonte.xadm.biz/xadm/integrador-server/compare/v1.1.0...HEAD [1.1.0]: https://fonte.xadm.biz/xadm/integrador-server/compare/v1.0.0...v1.1.0 [1.0.0]: https://fonte.xadm.biz/xadm/integrador-server/compare/v0.1.0...v1.0.0
4. Commit + tag¶
git add gradle.properties CHANGELOG.md
git commit -m "chore(release): v1.1.0"
git tag -a v1.1.0 -m "v1.1.0 - <descrição curta>"
git push origin master
git push origin v1.1.0
5. Atualizar Sentry release no Coolify (opcional)¶
No painel do Coolify, app de cada cliente:
- Atualizar a env SENTRY_RELEASE=v1.1.0 (ou integrador@1.1.0 se preferir).
- Redeploy.
Eventos no Sentry passam a ser tagueados com a versão — facilita correlacionar erros com release.
6. (Opcional) Atualizar openapi.info.version¶
Apenas se houve breaking change na API REST. Bump em separado, sem
sincronizar com project.version. Ver tabela no topo.
Como saber o que entrou desde a última release¶
git log --oneline v1.0.0..HEAD
Use o output para preencher o CHANGELOG. Convenção: agrupar por tipo (Added /
Changed / Fixed / Security) — ler o type: do conventional commit ajuda.
Como inspecionar a versão em runtime¶
A versão do projeto não vai automaticamente para o JAR (o artefato chama-se
app.jar sem versão). Hoje, para confirmar a versão de um deploy, use:
- Tag git do commit deployado (Coolify mostra o SHA do deploy →
git tag --points-at <sha>). - Env
SENTRY_RELEASEno painel do Coolify. - Log de startup do Sentry:
Sentry inicializado (environment=production)— o release aparece como tag nos eventos.
Futuro (opcional, não implementado): expor
project.versionvia um endpoint/versionou no log de startup do app. Adicionar quando virar dor.
Notas históricas¶
O bump de 0.1 → 1.0.0 (release de 2026-05-19) marcou a primeira release
com processo formal: introdução do login Google, CHANGELOG, tag git e doc
neste arquivo. Antes disso, o version="0.1" em build.gradle.kts era apenas
informativo e nunca foi incrementado.