Este guia explica como criar releases automaticamente no GitHub usando o workflow de CD.
-
Certifique-se que tudo está commitado:
git status
-
Crie uma tag seguindo o Semantic Versioning:
# Para uma nova versão maior (breaking changes) git tag v2.0.0 # Para uma nova funcionalidade (backward compatible) git tag v1.1.0 # Para correções de bugs git tag v1.0.1 # Para pre-releases git tag v1.0.0-alpha.1 git tag v1.0.0-beta.1 git tag v1.0.0-rc.1
-
Envie a tag para o GitHub:
git push origin v1.0.0
-
Aguarde o workflow executar:
- Acesse a aba
Actionsno GitHub - O workflow
CD - Deployserá executado automaticamente - Uma release será criada automaticamente
- Acesse a aba
- Vá em
Releasesno GitHub - Clique em
Draft a new release - Clique em
Choose a tage crie uma nova tag (ex:v1.0.0) - Preencha o título e descrição
- Clique em
Publish release
Quando você cria uma tag no formato v*, o workflow de CD cria automaticamente:
-
Changelog Detalhado categorizando os commits por tipo:
- ✨ Novas Funcionalidades (
feat:) - 🐛 Correções de Bugs (
fix:) - 📝 Documentação (
docs:) - 🔧 Outras Mudanças
- ✨ Novas Funcionalidades (
-
Estatísticas:
- Número total de commits
- Número de contribuidores
- Tag anterior
-
Arquivos da Release:
VERSION.txt- Informações sobre a versãosource-code.zip- Código fonte em ZIPsource-code.tar.gz- Código fonte em TAR.GZLICENSE.md- Arquivo de licença
-
Instruções de Instalação:
- Comandos para clonar e usar a versão específica
- Links para documentação
- Link para reportar issues
-
Comentários Automáticos:
- O workflow comenta automaticamente nas issues fechadas recentemente
- Informa que a issue foi incluída na release
Use Semantic Versioning:
v[MAJOR].[MINOR].[PATCH][-PRERELEASE]
v1.0.0- Primeira release estávelv1.1.0- Nova funcionalidadev1.1.1- Correção de bugv2.0.0- Mudança com breaking changev1.0.0-alpha.1- Pre-release alphav1.0.0-beta.1- Pre-release betav1.0.0-rc.1- Release candidate
- MAJOR (vX.0.0): Mudanças incompatíveis com versões anteriores
- MINOR (v1.X.0): Novas funcionalidades compatíveis com versões anteriores
- PATCH (v1.0.X): Correções de bugs
Para gerar changelogs organizados, use commits semânticos:
# Novas funcionalidades
git commit -m "feat: adiciona autenticação com JWT"
git commit -m "feat(api): adiciona endpoint de usuários"
# Correções
git commit -m "fix: corrige erro no login"
git commit -m "fix(auth): corrige validação de token"
# Documentação
git commit -m "docs: atualiza README com instruções de instalação"
# Refatoração
git commit -m "refactor: melhora estrutura de pastas"
# Performance
git commit -m "perf: otimiza queries do banco de dados"
# Testes
git commit -m "test: adiciona testes para controller de usuários"
# Build/CI
git commit -m "build: atualiza dependências"
git commit -m "ci: adiciona workflow de deploy"
# Outros
git commit -m "chore: atualiza .gitignore"
git commit -m "style: formata código com prettier"# 1. Criar uma branch de release
git checkout -b release/v1.0.0
# 2. Atualizar versão em arquivos (se houver)
# package.json, pyproject.toml, etc.
# 3. Atualizar CHANGELOG.md (opcional, o workflow gera automaticamente)
echo "## [1.0.0] - $(date +%Y-%m-%d)" >> CHANGELOG.md
# 4. Commit das mudanças
git add .
git commit -m "chore: prepare release v1.0.0"
# 5. Merge para main
git checkout main
git merge release/v1.0.0
# 6. Criar e enviar a tag
git tag v1.0.0
git push origin main
git push origin v1.0.0
# 7. Aguardar o workflow criar a releaseO changelog é gerado automaticamente, mas você pode personalizar editando o arquivo .github/workflows/cd.yml na seção create-release.
# Exemplo: adicionar categoria "Performance"
PERF=$(git log $PREVIOUS_TAG..HEAD --pretty=format:"- %s (%h)" --no-merges | grep -i "perf:" || echo "")
if [ -n "$PERF" ]; then
echo "### ⚡ Performance" >> changelog.md
echo "$PERF" | sed 's/perf: //' >> changelog.md
echo "" >> changelog.md
fiPara marcar uma release como pre-release, use tags com sufixos:
# Alpha
git tag v1.0.0-alpha.1
# Beta
git tag v1.0.0-beta.1
# Release Candidate
git tag v1.0.0-rc.1Releases com esses sufixos serão automaticamente marcadas como "pre-release" no GitHub.
- Acesse
https://github.com/SEU-USUARIO/SEU-REPO/releases
# Listar todas as releases
curl -H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/SEU-USUARIO/SEU-REPO/releases
# Obter a última release
curl -H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/SEU-USUARIO/SEU-REPO/releases/latest# Listar todas as tags
git tag -l
# Ver detalhes de uma tag
git show v1.0.0
# Checkout de uma versão específica
git checkout v1.0.0-
Verifique se a tag tem o formato correto (
v*):git tag # deve mostrar tags como v1.0.0 -
Verifique o workflow no Actions:
- Acesse a aba
Actions - Procure pelo workflow
CD - Deploy - Verifique os logs de erro
- Acesse a aba
-
Verifique as permissões:
- O workflow precisa de permissão
contents: write - Verifique se está configurado em
cd.yml
- O workflow precisa de permissão
-
Use commits semânticos:
git commit -m "feat: minha funcionalidade" -
Certifique-se que há commits desde a última tag:
git log $(git describe --tags --abbrev=0)..HEAD
Se aparecer erro de permissão ao criar a release:
- Vá em
Settings>Actions>General - Em
Workflow permissions, selecioneRead and write permissions - Salve e execute o workflow novamente
Use este checklist antes de criar uma release:
- Todos os testes passam
- Documentação está atualizada
- CHANGELOG foi revisado (ou será gerado automaticamente)
- Versão foi incrementada corretamente
- Breaking changes estão documentados (se houver)
- Commits seguem o padrão semântico
- Branch está sincronizada com main
- Tag segue o formato
v*.*.* - Workflow de CI passou com sucesso
Pronto para criar a release! 🚀