Começar
Aparência

Vale na hora e fica lembrada neste navegador.

Decisões

ORG-0010 — Versões fixas

Contexto

Versão flutuante (@latest, ubuntu-latest, uma tag sem patch) faz o mesmo commit construir coisas diferentes em dias diferentes. Quando quebra, ninguém mudou nada.

Decisão

  1. Toda ferramenta, biblioteca, imagem de container, action e CLI tem versão exata.
  2. Cada versão mora numa fonte única (o catálogo de versões, o lockfile, a tag no compose.yaml, eng/tools.versions), e os outros lugares a leem dela.
  3. Imagens de runtime levam também o digest.
  4. eng/pinned-versions.sh procura versões flutuantes e roda na CI quebrando o build.

Alternativas consideradas

AlternativaPor que não
Faixas de versão com atualização automáticaPor que não: builds não reproduzíveis; a mudança chega sem change
Versões exatas sem fonte únicaPor que não: a mesma ferramenta com duas versões em dois lugares

Consequências

  • Atualizar uma versão é um ato explícito, revisável no diff.
  • O script de versões fixas também confere que a mesma imagem tem a mesma tag em todo lugar.

Mais

O detalhe está na documentação da arquitetura.