Files
bookish-fork-dokerized/.github/workflows/checksum.yml
T
truetype 12d2018ac5 feat(R4b): reproducible builds — pin requirements.lock checksum
- Dockerfile: build-arg REQUIREMENTS_CHECKSUM verifica lo sha256 del
  lockfile (fallisce la build se non coincide; vuoto = skip locale)
- docker-compose.yml: default = hash corrente del lock
- CI: nuovo job checksum.yml che fallisce se il pin non coincide
- Fix YAML preesistente in ci.yml (name: con ':' non quotati)
- Docs: README, .env.example, review aggiornati
2026-08-29 22:36:31 +02:00

34 lines
1.3 KiB
YAML

name: deps-checksum
# R4b: il lockfile è "pinnato" per costruzioni riproducibili. Questo job
# fallisce se l'hash in docker-compose.yml non coincide con requirements.lock.
# Quando aggiorni le dipendenze:
# pip-compile --output-file=requirements.lock requirements.in
# sed -i "s/d13e4fb14a909e0bd06d20894860152d5334aa341dd9dec2e5e4ca368a0d2a62/$(sha256sum requirements.lock | awk '{print $1}')/" docker-compose.yml
on:
push:
branches: [main]
pull_request:
jobs:
checksum:
runs-on: ubuntu-latest
name: checksum lockfile
steps:
- uses: actions/checkout@v4
- name: Calcola hash attuale
id: hash
run: |
H=$(sha256sum requirements.lock | awk '{print $1}')
echo "hash=$H" >> "$GITHUB_OUTPUT"
- name: hash pinned in docker-compose.yml
run: |
PIN=$(grep -oP 'REQUIREMENTS_CHECKSUM: \$\{REQUIREMENTS_CHECKSUM:-\K[a-f0-9]{64}' docker-compose.yml | head -1)
[ -n "$PIN" ] || { echo "hash non pinnato in docker-compose.yml"; exit 1; }
echo "pinned=$PIN"
echo "atteso=${{ steps.hash.outputs.hash }}"
[ "$PIN" = "${{ steps.hash.outputs.hash }}" ] || { echo "checksum non aggiornato — rivedi docker-compose.yml"; exit 1; }
echo "checksum OK"