Skip to content
Latchkey

gvm vs asdf: gerenciando versões do Go

O gvm é um gerenciador de versões específico do Go com tratamento de GOPATH e pkgsets; o asdf gerencia Go junto de muitas outras linguagens via plugins.

O gvm foca somente no Go, instalando múltiplas versões do Go, gerenciando o GOPATH e oferecendo pkgsets para isolar dependências na era pré-modules. O asdf gerencia o Go por meio de um plugin e um arquivo .tool-versions compartilhado, unificando-o com Node, Python e outros. Com os Go modules agora padrão, boa parte da maquinaria extra do gvm importa menos, e o asdf (ou a toolchain oficial) cobre a maioria das necessidades.

gvmasdf
EscopoSó GoPoliglota
GOPATH / pkgsetsEmbutidoNão necessário (modules)
Arquivo de configEspecífico do gvm.tool-versions
ManutençãoMenos ativaAtiva
Melhor paraFluxos Go legadosRepos multilinguagem

No CI

No CI, o Go é normalmente instalado via setup-go ou pelo asdf fixando uma única versão; os recursos de GOPATH e pkgset do gvm estão em grande parte obsoletos com os modules. O asdf mantém o Go fixado ao lado dos seus outros runtimes em um único arquivo, o que é mais limpo para pipelines poliglotas. O gvm só se encaixa se você mantém fluxos Go mais antigos.

Acelere

Faça cache da instalação do Go e do cache de modules com a chave baseada em go.sum. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam as etapas de instalação, build e testes do Go.

O veredito

Manter projetos Go legados que dependem de GOPATH ou pkgsets: gvm. Gerenciar Go junto de outras linguagens em um repositório moderno baseado em modules: asdf (ou setup-go no CI). Para a maioria das equipes hoje, o asdf ou a toolchain oficial é a escolha mais simples.

Guias relacionados