Neste artigo vamos aprender como criar um processo de versionamento e como extrair o melhor das ferramentas SVN, Maven e Nexus para automatizar o lançamento de novas versões com segurança e estabilidade.
Em que situação o tema é útil:
A adoção de um processo de versionamento automatizado ajuda a elevar o nível de maturidade e organização da empresa, garantindo um controle rígido sobre as modificações realizadas pela equipe de desenvolvimento. Dessa forma, é possível evitar o lançamento de versões instáveis e aumentar a qualidade do produto entregue ao cliente.
Resumo DevMan:
O objetivo deste artigo é mostrar como criar um processo de versionamento simples e automatizado com base nas ferramentas open source mais utilizadas pelo mercado: SVN, Maven e Nexus.
Em que versão seu projeto de software se encontra atualmente? Se você não conseguir responder a esta pergunta, cuidado! A falta de uma política de versionamento adequada pode levar a um cenário perigoso, abrindo espaço para instabilidade e desorganização. Por conta disso, éde extrema importância incluir etapas de planejamento de releases e versionamento dentro do processo de desenvolvimento de software da sua empresa.
Um projeto de software normalmente écomposto, além de seu próprio código, por diversas dependências, tanto externas quanto internas. Éimportante observar que da mesma forma que damos importância para as versões das dependências externas como do Hibernate ou do Spring, também devemos nos preocupar com as versões das dependências internas, criadas por nós mesmos, dentro do ambiente corporativo.
A cada novo lançamento dos nossos projetos de software, bugs são corrigidos, novas funcionalidades são criadas e APIs públicas são modificadas, muitas vezes quebrando a compatibilidade com outros projetos. Por esse motivo éfundamental manter uma documentação consistente, capaz de identificar essas alterações, atribuindo-as a uma determinada versão.
Neste artigo, vamos abordar como criar e manter versões de forma automatizada utilizando a ferramenta Apache Maven 3, e ainda utilizar o servidor de artefatos Nexus, da Sonatype, para armazenar, gerenciar e compartilhar artefatos de softwares gerados entre as equipes de desenvolvimento.
Definindo uma estratégia de versionamento para o seu projeto
Versionamento de software éo processo que tem como resultado final a atribuição de um identificador único, capaz representar e comunicar o estado do software em um determinado momento.
É um grande desperdício olhar para o número de versão de um software e não conseguir interpretar seu real significado. Ao estudar e entender seu processo de formação épossível compreender importantes informações semânticas, escondidas atrás de um conjunto de números, que normalmente passariam despercebidas.
Um exemplo didático que ilustra bem esse fato éa ocorrência de uma atualização da versão 3.7.2 para a versão 3.7.3 de um determinado software. Nesse cenário, o esquema de versionamento adotado possui três números (X.Y.Z) e cada um deles possui seu significado próprio. Se apenas o último número variar, a intenção é comunicar que a atualização contém apenas correções de defeitos e no máximo alterações na estrutura interna do código, não agregando novas funcionalidades ao produto final ou mesmo modificações em sua API pública que possam causar incompatibilidade. Veremos mais a frente detalhes sobre esse tipo de esquema de versionamento.
Entretanto, éimportante observar que a evolução do número das versões de um software pode seguir diferentes esquemas de numeração e que essa escolha vai depender muito do nível de detalhes que se pretende atingir para controlar e principalmente comunicar a evolução do software. O mercado adota os mais variados padrões e não existe uma regra oficial na hora de definir o número de versão de um determinado software. Por isso, consulte sempre os detalhes a esse respeito na documentação publicada pelo fabricante.
Abaixo, estão relacionados alguns tipos de padrões de versionamento e nomenclatura adotados pelo mercado:
· Sequencial: Este tipo de versionamento éo mais simples e pode ser utilizado em situações onde não seja necessário manter um controle semântico rigoroso a respeito do tipo de modificação realizada no software. Émuito utilizado para versionar arquivos individualmente, no entanto pode apresentar desvantagens se for empregado para produtos inteiros.
É bemprovável que o número da versão suba muito rápido, transmitindo uma falsa impressão de evolução, quando na verdade os incrementos podem acontecer por conta de correções ou pequenas funcionalidades sendo adicionadas ao produto;
· Combinado: Boa parte dos projetos de software utiliza uma combinação de números para comunicar semanticamente o nível de importância das modificações contidas em cada release. A seguir, estão relacionadas algumas formas de como combinar números para versionar um software:
o Dois números (X.Y): Representa a evolução do produto na forma de dois números combinados. O primeiro deles indica o lançamento de funcionalidades maiores e de grande importância. Já o segundo número éincrementado apenas para indicar alterações menores como correções de defeitos, refatorações ou pequenas funcionalidades.
Enquanto o software estiver em estágio beta, é recomendado empregar o zero na primeira posição do número da versão. Somente no momento em que o software ganha estabilidade suficiente para sair do estado de beta éque se recomenda definir a versão como 1.0.
É considerada uma prática comum saltar algumas versões, como de 5.1 para 5.5, por exemplo, ao perceber que uma quantidade significativa de funcionalidades de menor importância foi desenvolvida, mas não justifica o incremento do número mais significativo da versão;
...