name: Doxygen → Codeberg Pages (manual-only) # Auto-publish Doxygen HTML to https://tmoussa.codeberg.page/ConformalLabpp/ # every time the public API or docs source changes on main. # # Pattern: mirrors mirror-to-codeberg.yml — reuses the existing # CODEBERG_TOKEN secret + HTTPS push. No new secret setup required. # # ─── DISABLED 2026-05-26 ─────────────────────────────────────────────────── # The auto-publish trigger is intentionally disabled. Background: the # `pages` branch on codeberg went into an inconsistent state during the # v0.10.0 PR-merge sequence (the cleanup deleted preview branches and the # resulting force-pushes left the pages branch unreachable for the CI's # HTTPS push). Until the underlying push step is verified to work cleanly # from CI again, the workflow is restricted to `workflow_dispatch` only — # meaning: manual republication via the Gitea Actions UI, no automatic # overwrite of the manually-curated pages branch on every main push. # # The pages branch currently serves the v6 reviewer hub HTML # (`doc/reviewer/hub.html` source-of-truth) plus the Doxygen output at # /doxygen.html. Both are stable and survive merges as long as nothing # pushes to the pages branch. # # To re-enable auto-publish later: uncomment the `push:` block below, run # a manual dispatch first to verify, then watch a normal merge. # # on: # push: # branches: # - main # paths: # - "code/include/**" # - "Doxyfile" # - "scripts/doxygen-md-filter.sh" # - "doc/**/*.md" # - "README.md" # - "CLAUDE.md" # - ".gitea/workflows/doxygen-pages.yml" on: workflow_dispatch: {} jobs: publish: runs-on: eulernest container: image: git.eulernest.eu/conformallab/ci-cpp:latest steps: - uses: actions/checkout@v4 - name: Configure CMake (Doxygen target only — no compiler needed) run: cmake -S code -B build - name: Build Doxygen HTML run: | cmake --build build --target doc test -f doc/doxygen/html/index.html warnings=$(wc -l < doc/doxygen/doxygen-warnings.log) echo "DOC ▸ Doxygen warnings: $warnings" if [ "$warnings" -gt 0 ]; then echo "::warning::Doxygen produced $warnings warning(s) — review doc/doxygen/doxygen-warnings.log" head -30 doc/doxygen/doxygen-warnings.log fi - name: Enforce Doxygen coverage 100% # Coverage is measured against every public symbol under # code/include/ (the `detail::` namespaces are excluded). As of # the `docs/doxygen-coverage-100` PR the baseline is 100 %, so # the gate fires only on regressions. run: bash scripts/doxygen-coverage.sh --threshold 100 - name: Regenerate doc/api/headers.md from XML run: | python3 scripts/gen-headers-md.py # If the auto-generated headers.md drifted from main, note it. # This job runs on every main push so a drift only persists # for the duration of one push — the next push that lands # will fold the new headers.md back into main (via the # codeberg pages branch). For deterministic regeneration # within main itself, run `bash scripts/regen-docs.sh` # locally before pushing. if ! git diff --quiet -- doc/api/headers.md; then echo "::warning::doc/api/headers.md drifted — run scripts/regen-docs.sh locally and commit before next push" git --no-pager diff -- doc/api/headers.md | head -30 fi - name: Publish HTML to codeberg pages branch env: CODEBERG_TOKEN: ${{ secrets.CODEBERG_TOKEN }} run: | set -eu # Build the publish payload in a clean scratch dir so the # orphan branch contains only the reviewer hub + Doxygen # output (and a marker README), never any build/source # artefacts. publish_dir=$(mktemp -d) cp -r doc/doxygen/html/. "$publish_dir/" # ── Reviewer hub override ───────────────────────────────── # If doc/reviewer/hub.html is present, install it as the # publish landing page and demote the auto-generated Doxygen # index to /doxygen.html. The hub is hand-curated and lives # under source control; this step keeps it visible after # every push to main, surviving the auto-publish cycle. if [ -f doc/reviewer/hub.html ]; then mv "$publish_dir/index.html" "$publish_dir/doxygen.html" cp doc/reviewer/hub.html "$publish_dir/index.html" echo "DOC ▸ reviewer hub installed; Doxygen index now at /doxygen.html" fi cat > "$publish_dir/README.txt" <