ci+hub: durable reviewer hub via in-repo HTML + perf-CI matrix on Linux
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 2m16s
API Docs / doc-build (pull_request) Successful in 51s
Markdown link check / check (pull_request) Successful in 45s
C++ Tests / test-cgal (pull_request) Failing after 7m40s
C++ Tests / quality-gates (pull_request) Failing after 2m1s

Two additions that close out the reviewer-prep work cleanly:

1. doc/reviewer/hub.html  +  publish-workflow integration
   ──────────────────────────────────────────────────────
   Move the hand-curated reviewer hub from the codeberg `pages`
   branch (where it lived as an opaque snapshot) into the repo as
   `doc/reviewer/hub.html`.  `.gitea/workflows/doxygen-pages.yml`
   gains a conditional `if [ -f doc/reviewer/hub.html ]; then …`
   step that installs it as the publish `index.html` and demotes
   the auto-generated Doxygen index to `/doxygen.html`.

   Effect: merging any of the open PRs into main will trigger the
   workflow, which republishes BOTH the Doxygen + the reviewer hub
   together.  The reviewer URL stays live across merges with zero
   manual intervention.

   Source-controlled benefits:
     * hub edits go through normal PRs, not orphan-branch
       force-pushes
     * old hub versions live in git history
     * the in-repo links now target `branch/main/…` instead of the
       transient `preview/reviewer-snapshot-vN/…` paths

2. .gitea/workflows/perf-compile-time.yml — Linux CI bench
   ────────────────────────────────────────────────────────
   New workflow runs on every push to main that touches the build
   system or public headers.  Five-step matrix measures and reports:
     Run 1   cold baseline (no PCH, no Unity, no ccache)
     Run 2   + PCH only
     Run 3   + PCH + Unity (current default)
     Run 4   + FAST_TEST_BUILD=ON  (-O0 -g — Linux's expected ~40 % win)
     Run 5   + ccache warm rerun   (expected ≥ 90 % cache hit)

   Validates the Apple-M1 predictions in doc/architecture/compile-time.md
   against the Linux + g++ runner where Backend dominates more and
   the Apple-clang+PCH friction that defeats ccache locally does not
   apply.  Job is data-collection only; never blocks a merge.

doc updates:
  * doc/architecture/compile-time.md — new "Cross-platform perf bench"
    section linking to the workflow + the table of macOS-vs-Linux
    expected deltas.
  * doc/reviewer/README.md — new "Hub-Page durability" subsection
    explaining how the hub survives merges.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-26 09:11:34 +02:00
parent bc40a13e8d
commit 3f508adf18
5 changed files with 756 additions and 4 deletions

View File

@@ -75,16 +75,31 @@ jobs:
run: |
set -eu
# Build the publish payload in a clean scratch dir so the
# orphan branch contains only the Doxygen output (and a
# marker README), never any build/source artefacts.
# 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" <<EOF
conformallab++ — Doxygen HTML API documentation.
conformallab++ — Doxygen HTML API documentation + reviewer hub.
Auto-generated by .gitea/workflows/doxygen-pages.yml from
commit ${GITHUB_SHA:-$(git rev-parse HEAD)} on $(date -Iseconds).
Source: https://codeberg.org/TMoussa/ConformalLabpp
Reviewer hub: doc/reviewer/hub.html (in-repo)
Doxygen index: /doxygen.html
EOF
cd "$publish_dir"