DEV Community

Higor Anjos
Higor Anjos

Posted on

1

Versionamento Semântico (SemVer): Um Guia Prático

O Versionamento Semântico (ou SemVer) é um padrão de regras utilizado para acompanhar versões de softwares durante seu desenvolvimento. O termo SemVer vem de Semantic Versioning, que significa Versionamento Semântico. Esse padrão fornece uma forma clara e consistente de comunicação sobre as mudanças realizadas no projeto, permitindo que desenvolvedores e usuários entendam facilmente o impacto de cada atualização.

Se você já instalou pacotes, frameworks ou softwares, certamente percebeu números como 1.2.3 ou 2.0.0. Essas sequências facilitam a compreensão do tipo de atualização feita, seja uma nova funcionalidade, uma correção de bug ou uma mudança crítica.


Formato do Versionamento Semântico

O SemVer segue o formato:

MAJOR.MINOR.PATCH

Enter fullscreen mode Exit fullscreen mode

MAJOR (Versão Principal)

O primeiro número representa mudanças significativas no software que quebram a compatibilidade com versões anteriores. Isso pode incluir remoções ou alterações de funcionalidades, exigindo adaptações por parte dos usuários.

  • Exemplo: Atualizar de 1.4.2 para 2.0.0 indica mudanças importantes e potencialmente incompatíveis.

MINOR (Versão Menor)

O segundo número é atualizado quando novas funcionalidades ou melhorias são adicionadas sem afetar a compatibilidade com versões anteriores.

  • Exemplo: Atualizar de 1.4.2 para 1.5.0 mostra que novos recursos foram incluídos sem impacto no código existente.

PATCH (Correção de Erros)

O terceiro número é usado para indicar correções de bugs ou ajustes menores que não alteram o comportamento ou funcionalidades do software.

  • Exemplo: Atualizar de 1.4.2 para 1.4.3 reflete a correção de um problema sem mudanças estruturais.

Ciclo de Vida de Lançamento de um Software

Alpha

A versão Alpha é a primeira versão funcional do software, usada internamente pelos desenvolvedores para testes iniciais e validação de conceitos. É instável e geralmente indisponível para o público.

Beta

A versão Beta é mais completa e é disponibilizada para testes por um público maior, com o objetivo de identificar erros e coletar feedback. Embora funcional, ainda pode conter instabilidades.

Release Candidate (RC)

A versão Release Candidate é considerada estável e próxima da final. Se nenhum problema crítico for encontrado, ela se torna a versão oficial do software.


Exemplo Prático

Correção de Bug:

  • Versão atual: 1.0.0
  • Nova versão: 1.0.1 (PATCH)

Exemplo: Um erro em um endpoint foi corrigido sem afetar a compatibilidade.

Nova Funcionalidade:

  • Versão atual: 1.0.1
  • Nova versão: 1.1.0 (MINOR)

Exemplo: Um novo endpoint foi adicionado para gerenciar permissões de usuários.

Mudança Incompatível:

| Versão atual: 1.1.0
| Nova versão: 2.0.0 (MAJOR)

Exemplo: O modelo de autenticação foi completamente refatorado, exigindo ajustes nos sistemas que consomem a API.


Implementando SemVer com GitHub Releases

Criar uma Tag

Para marcar uma versão específica no repositório:

git tag -a v1.0.0 -m "Primeira versão estável"
git push origin v1.0.0

Enter fullscreen mode Exit fullscreen mode

Criar uma Pré-Lançamento

Para criar uma versão de testes antes do lançamento oficial:

git tag -a v1.1.0-beta -m "Versão beta para testes"
git push origin v1.1.0-beta

Enter fullscreen mode Exit fullscreen mode

Visualizar Histórico de Versões

Para listar todas as versões marcadas:

git tag

Enter fullscreen mode Exit fullscreen mode

Dicas e Regras Essenciais

  • Use o formato MAJOR.MINOR.PATCH de maneira consistente.
  • Nunca altere uma versão já publicada.
  • Identifique versões de pré-lançamento com sufixos como -alpha, -beta ou -rc.
  • Documente as mudanças usando um arquivo como CHANGELOG.md.

    • Um CHANGELOG.md com formato padrão:

      # Changelog
      
      ## [1.1.0] - 2025-01-20
      ### Adicionado
      - Nova seção sobre integração com ferramentas CI/CD.
      - Exemplos mais detalhados de uso com GitHub Actions.
      
      ## [1.0.0] - 2025-01-18
      ### Lançamento
      - Conteúdo inicial sobre Versionamento Semântico.
      
      

Com o Versionamento Semântico, você pode comunicar mudanças de forma clara e eficaz, tornando o processo de desenvolvimento mais organizado e previsível.


Versão: 1.1.0

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

Imagine monitoring that's actually built for developers

Join Vercel, CrowdStrike, and thousands of other teams that trust Checkly to streamline monitor creation and configuration with Monitoring as Code.

Start Monitoring

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay