Pular para o conteúdo

Reprodutibilidade

Terminal window
oren install

Resolve 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.

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.

Funciona, mas avisa:

! sem oren.lock: as imagens são resolvidas por tag, que pode mudar. Rode `oren install`.

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.