HT-14: legal-manifest.json build pipeline (pandoc + WeasyPrint, Gitea Actions)
Build legal manifest / build-manifest (push) Failing after 3m37s

scripts/build-manifest.py: minden projekt-almappa .md dokumentumát
HTML+PDF-re renderel (pandoc → HTML, WeasyPrint → PDF, full_fonts=True —
lásd HRF-34, ugyanaz a determinizmus-óvintézkedés), és dist/legal-manifest.json-t
ír soronként: version (utolsó, a fájlt ténylegesen érintő commit rövid
hashe, NEM repo HEAD — HT-15), effective_from (a dokumentum saját
"Hatálybalépés napja" sorából parse-olva, null ha még [dátum] placeholder),
content_hash (a forrás git blob hashe, átmeneti megoldás, lásd a script
docstringjét).

.gitea/workflows/legal-manifest.yml: push/manual trigger, teljes (nem
sekély) checkout, pandoc+WeasyPrint telepítve explicit lépésként (nem
egyedi runner-image — így a CI-környezet a workflow fájlból látható és
reprodukálható).

Helyileg tesztelve: effective_from-parse, git_blob_hash, last_commit_hash,
pandoc HTML-render mind helyesen működik. A WeasyPrint-lépés Windows-on
nem tesztelhető (natív libek, lásd HRF-34) — a CI-futtatás bizonyítja.
This commit is contained in:
Your Name
2026-07-17 13:49:12 +02:00
parent 6b009e9a43
commit 492aafd58a
3 changed files with 180 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
name: Build legal manifest
# HT-14: renders every project's legal markdown to HTML+PDF and produces
# dist/legal-manifest.json — the single canonical source HT-15's consumer backends import,
# so no one hashes/versions independently. See scripts/build-manifest.py for the actual
# logic; this workflow just provides the environment it needs.
on:
push:
branches: [main]
workflow_dispatch: {}
jobs:
build-manifest:
runs-on: ubuntu-latest
steps:
- name: Checkout (full history)
uses: actions/checkout@v4
with:
# NOT the default shallow clone: scripts/build-manifest.py's per-file
# `git log -1 -- path` needs real history, or every file silently resolves to
# whatever the one shallow commit happens to be (see HT-15 belépő ellenőrzés).
fetch-depth: 0
# The CI environment: a plain ubuntu-latest job container (act_runner default image),
# with pandoc (markdown -> HTML, per HT-14) and WeasyPrint (HTML -> PDF, same
# approach already proven deterministic for ResidentFirst's HRF-34 offer contracts)
# installed as an explicit step — not baked into a custom runner image, so the
# environment stays visible and reproducible directly from this file.
- name: Install pandoc + WeasyPrint
run: |
apt-get update -qq
apt-get install -y --no-install-recommends \
pandoc python3 python3-pip python3-venv \
libpango-1.0-0 libpangoft2-1.0-0 fonts-dejavu-core
python3 -m venv /tmp/venv
/tmp/venv/bin/pip install --quiet weasyprint==69.0
echo "/tmp/venv/bin" >> "$GITHUB_PATH"
- name: Build manifest
run: python3 scripts/build-manifest.py
- name: Upload manifest + rendered artifacts
uses: actions/upload-artifact@v4
with:
name: legal-manifest
path: dist/