O Que É um Release?
Um release é uma versão específica e versionada do seu software que é disponibilizada aos usuários, muitas vezes acompanhada de notas descrevendo o que mudou.
Um release é o marco voltado ao usuário da entrega de software. Onde um build é uma saída técnica e um deployment é uma ação de infraestrutura, um release é o momento em que o mundo recebe nova funcionalidade, empacotada, nomeada e documentada.
O que é um release
Um release agrupa um conjunto de mudanças em uma unidade nomeada e versionada e a torna disponível aos usuários. Ele geralmente carrega um número de versão, uma tag no controle de código, os artifacts sendo enviados e um changelog descrevendo as mudanças. Um release é algo para o qual você pode apontar e dizer "isto é o que os usuários estão rodando".
Como releases são versionados
A maioria das equipes usa versionamento semântico, onde uma versão como 2.4.1 codifica o tipo de mudança: um incremento no primeiro número sinaliza uma mudança que quebra compatibilidade, o segundo adiciona funcionalidades, o terceiro corrige bugs. Números de versão permitem que usuários e sistemas dependentes raciocinem sobre compatibilidade num relance.
Release versus deployment
Fazer deploy é colocar código na infraestrutura; fazer release é torná-lo disponível aos usuários. Você pode fazer deploy de um build para produção com uma nova funcionalidade escondida atrás de uma flag, depois "fazer o release" dela dias depois ativando a flag, sem necessidade de novo deployment. Manter os conceitos separados dá controle sobre risco e tempo.
Um exemplo
Uma equipe marca o histórico de commits como v3.0.0, faz o build dos artifacts do release, publica um changelog anotando um novo dashboard e uma mudança de API que quebra compatibilidade, e o anuncia. Os usuários atualizam sabendo exatamente o que mudou e que o incremento de versão maior sinaliza uma mudança que quebra compatibilidade.
Por que releases importam
Releases dão às mudanças um nome, uma versão e um registro. Isso torna o suporte mais fácil ("em qual release você está?"), os rollbacks mais claros (reverter para o release anterior) e a comunicação honesta (o changelog). Automatizar a criação de releases remove trabalho manual e erro humano do processo de cortar uma versão.
Principais conclusões
- Um release é um conjunto nomeado e versionado de mudanças disponibilizado aos usuários.
- O versionamento semântico comunica a natureza de cada release.
- Fazer release é distinto de fazer deploy e pode ser controlado separadamente.