Reprodutibilidade
oren installResolve contratos, implementações e imagens, e grava oren.lock:
{ "id": "analyze", "task": "techlite/analyze-commits@1.0.0", "implementation": "techlite/analyze-commits-alpine@1.0.0", "source": { "kind": "image", "ref": "docker.io/library/alpine:3.20@sha256:d9e853e87e55..." }, "entrypoint": ["/worker/entrypoint.sh"]}Commite este arquivo. É ele que garante que todos executem o mesmo código.
O problema que ele resolve
Seção intitulada “O problema que ele resolve”alpine:3.20 é uma tag, e tags são mutáveis. Republicá-la com outro conteúdo
faria o mesmo pipeline executar código diferente — sem nenhum sinal.
Isso não é só uma questão de reprodutibilidade. A autorização de acesso é ancorada na identidade do worker: sem o lockfile, o consentimento que você deu a uma imagem passaria em silêncio para outra que ninguém revisou.
Com digest, imagem diferente é identidade diferente, e o Oren pergunta de novo.
Sem lockfile
Seção intitulada “Sem lockfile”Funciona, mas avisa:
! sem oren.lock: as imagens são resolvidas por tag, que pode mudar. Rode `oren install`.Workers em desenvolvimento
Seção intitulada “Workers em desenvolvimento”Uma implementação que constrói do diretório local também é travada — pelo digest do conteúdo:
"source": { "kind": "build", "context": "/casa/worker", "digest": "sha256:26ca9d..." }Mover o diretório não muda a identidade; alterar o conteúdo muda.