DEV Community

Danilo Silva
Danilo Silva

Posted on

Git Flow - Releases [pt-BR]

Vamos aprender para que servem as branches chamadas de releases e como aplicar o uso delas ao lançamento de uma versão no ambiente de produção.


Definição

Releases são branches de preparação de um novo lançamento em produção e elas permitem pequenas correções de bugs e preparação de metadados para publicação (número da versão, datas de construção, entre outras definições).

Por convenção elas têm o prefixo release/.
Por exemplo:

  • release/0.1.0

Importante ressaltar que as releases (vamos nos acostumar a chamá-lás assim) são criadas sempre à partir da branch develop.

📌 O momento ideal para criar uma nova branch release é quando o desenvolvimento (quase) reflete o estado desejado do novo lançamento. Pelo menos todos os recursos que são direcionados para o lançamento a ser construído devem estar presentes na branch develop.

Git Flow create release in action

📝 Descrição da imagem:

Criação de uma feature a partir da develop (F - Nova feature) e no final do desenvolvimento da funcionalidade (C - Commit) é realizada a mesclagem com a develop (M - Merge).

Logo após é criada uma release (R - Nova release), onde pode haver alteração do número de versão e outras definições e por fim, a mesclagem com a branch master (M - Merge) e o código atualizado volta a ser integrado também, à develop.


Releases na prática 😎

Pré-requisitos

  • Ter o GIT instalado
  • Qualquer repositório com o fluxo do Git Flow inicializado e configurado.

1. Criação de releases

Para criar uma release é bem simples:

git flow releases start <número-versão-proposta>
Enter fullscreen mode Exit fullscreen mode

Com um comando neste padrão, será criada uma nova branch através da develop com o prefixo release/, seguido do número de versão que você inserir.
Execute:

git flow release start 0.1.0
Enter fullscreen mode Exit fullscreen mode

O retorno do comando é uma nova branch entitulado release/0.1.0 e já é realizado checkout nessa nova branch.

[saída do console]                                                       
Switched to a new branch 'release/0.1.0'

Summary of actions:
- A new branch 'release/0.1.0' was created, bases on 'develop'
- You are now on branch 'release/0.1.0'

Follow-up actions:
- Bump the version number now!
- Start commtting last-minute in preparing your release
- When done, run:

      git flow release finish '0.1.0' 
Enter fullscreen mode Exit fullscreen mode

2. Finalização de releases

Após terminar o preparação da aplicação para ser lançada em produção, a branch estará pronta para ser finalizada e mesclada à develop.

Então você verificou que está na release, não há nenhum commit a ser feito e nenhum arquivo pendente...

git checkout release/0.1.0
git status
Enter fullscreen mode Exit fullscreen mode
[saída do console]                         
No ramo release/0.1.0              
nothing to commit, working tree clean
Enter fullscreen mode Exit fullscreen mode

Para finalizar uma release, basta:

git flow release finish <número-versão-proposta>
Enter fullscreen mode Exit fullscreen mode

O número da versão da release é opcional quando você já está presente(checkout) nela.

Execute:

git flow release finish
Enter fullscreen mode Exit fullscreen mode

Após esta instruçao, aparecerá a possibilidade de escrever uma mensagem que descreverá a versão lançada (nota de versão).


#
# Write a message for tag:
#  0.1.0
# Lines starting with '#' will be ignored.
Enter fullscreen mode Exit fullscreen mode

⚠️ A finalização de uma release marca a criação de uma tag correspondente ao número de versão entitulado na branch release.

Depois de escrever a mensagem, a release será meclada(merge) à master E à develop, em seguida deletada tanto localmente como remotamente.

Switched to branch 'master'
Your branch is up to date with 'origin/master'.
To <url-repositorito-remoto>
 -  [deleted]                          release/0.1.0
Deleted branch release/0.1.0 (was 713d5ac).

Summary of actions:
- Release branch 'release/0.1.0' has been merged into 'master'
- The release was tagged '0.1.0'
- Release branch 'release/0.1.0' has been locally deleted; it has been remotely deleted from 'origin'
- You are now on branch 'master'
Enter fullscreen mode Exit fullscreen mode

Considerações finais

Para garantir que o repositório remoto estará atualizado baseando no status da sua estação de trabalho local, execute os comandos abaixo:

EMPURRE (push) as atualizações de todos as branches

  git push --all
Enter fullscreen mode Exit fullscreen mode

SUBA (push) a tag recentemente criada

  git push --tags
Enter fullscreen mode Exit fullscreen mode

Pronto, para trabalhar com releases de forma simples e rápida, é isto!!

⚡ Nesta seção sobre Git Flow você encontrará explicações e usos práticos sobre features, hotfixes, tags e muito mais.


Obrigado por chegar até aqui! 😄

Top comments (0)