Releases

Vamos aprender para que servem os branches chamados de releases e como aplicar o uso deles 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/v1.0.0

Importante ressaltar que as releases são criadas sempre à partir da branch develop.

O momento ideal para criar um novo 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 no branch develop.

Descrição da imagem: Criação de duas features a partir da develop (F - Nova feature) e no final do desenvolvimento das funcionalidades (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 o branch master (M - Merge) e o código atualizado volta a ser integrado também, à develop.

Releases na prática 😎

Pré-requisitos

1. Criação de releases

Para criar uma release é bem simples:

git flow releases start <número-versão-proposta>

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

Execute:

git flow release start v1.0.0

O retorno do comando é um novo branch entitulado release/v1.0.0 e já é realizado checkout nesse novo branch.

[saída do console] Switched to a new branch 'release/v1.0.0' Summary of actions: - A new branch 'release/v1.0.0' was created, bases on 'develop' - You are now on branch 'release/v1.0.0' Follow-up actions: - Bump the version number now! - Start commtting last-minute in preparing your release - When done, run: git flow release finish 'v1.0.0'

2. Finalização de releases

Após terminar a preparação da aplicação para ser lançada em produção, o branch estará pronto para ser finalizado e mesclado tanto na master quanto na develop.

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

git checkout release/v1.0.0
git status

[saída do console] No ramo release/v1.0.0 nothing to commit, working tree clean

Para finalizar uma release, basta:

git flow release finish <número-versão-proposta> O número da versão da release é opcional quando você já está presente(checkout) nela.

Execute:

git flow release finish

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

[console] # # Write a message for tag: # v1.0.0 # Lines starting with '#' will be ignored.

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

Depois de escrever a mensagem, a release será meclada(merge) a master E a 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/v1.0.0 Deleted branch release/v1.0.0 (was 713d5ac).

Summary of actions:

  • Release branch 'release/v1.0.0' has been merged into 'master'

  • The release was tagged 'v1.0.0'

  • Release branch 'release/v1.0.0' has been locally deleted; it has been remotely deleted from 'origin'

  • You are now on branch 'master'

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 os branches

git push --all

SUBA (push) a tag recentemente criada

git push --tags

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

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

Obrigado por chegar até aqui! 😁

Last updated