ci: switch all non-fast jobs to comment triggers

Every CI job except test-fast and mirror-to-codeberg now runs only
when explicitly requested via a PR comment, instead of on every push
or PR sync.  This keeps the Pi runner idle during WIP commits and lets
the author decide when to pay each job's cost.

Trigger commands:
  /test-cgal       → CGAL test suite (277 tests, ~5 min build + 31 s run)
  /quality-gates   → license/codespell/shellcheck/cgal-conventions (~30 s)
  /docs            → Doxygen build + warning summary (~2 min)
  /links           → Markdown internal link check (~10 s)

All comment-triggered jobs check:
  event is issue_comment
  AND comment is on a PR (issue.pull_request != null)
  AND comment body contains the trigger word
  AND checkout uses refs/pull/N/head (not the default branch)

Jobs that stay automatic:
  test-fast         — runs on every push (26 pure-math tests, < 5 s)
  mirror-to-codeberg — unchanged

Jobs that keep additional triggers:
  markdown-links — weekly cron (Mon 05:00 UTC) + workflow_dispatch
  doc-build      — workflow_dispatch (for manual runs outside a PR)

quality-gates drops `needs: test-fast` — it now runs independently
when comment-triggered (caller decides whether test-fast passed first).

CLAUDE.md CI pipeline table updated with all five jobs and their new
trigger descriptions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-31 01:06:21 +02:00
parent 2b456abc78
commit 018484a94d
4 changed files with 46 additions and 39 deletions

View File

@@ -1,34 +1,38 @@
name: API Docs
# Trigger: write "/docs" as a comment on any pull request.
# Also available via workflow_dispatch for manual runs outside a PR context.
on:
push:
branches:
- main
pull_request:
issue_comment:
types: [created]
workflow_dispatch: {}
# ─────────────────────────────────────────────────────────────────────────────
# Doc-build — informational only
#
# Generates Doxygen HTML from the public headers and reports warning
# statistics. Does NOT block merges: `continue-on-error: true` ensures
# warnings or extraction issues never fail the CI gate. When Doxygen
# coverage is denser (Phase 8c), this job can be promoted to a hard
# requirement and the HTML deployed to Pages.
# warnings or extraction issues never fail.
#
# Note: Gitea Actions on GHES does not support `actions/upload-artifact@v4`,
# so HTML artifact upload is intentionally omitted. The warning summary
# in the job log is the primary reviewer signal; reviewers who want the
# HTML can rebuild it locally with `cmake --build build --target doc`.
# Trigger: "/docs" PR comment (or workflow_dispatch for manual runs).
# Checkout uses refs/pull/N/head when triggered via comment.
# ─────────────────────────────────────────────────────────────────────────────
jobs:
doc-build:
if: github.event_name == 'pull_request'
if: |
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issue_comment' &&
github.event.issue.pull_request != null &&
contains(github.event.comment.body, '/docs'))
runs-on: eulernest
container:
image: git.eulernest.eu/conformallab/ci-cpp:latest
continue-on-error: true # never block the merge
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'issue_comment' && format('refs/pull/{0}/head', github.event.issue.number) || github.ref }}
- name: Generate API documentation
run: doxygen Doxyfile 2>&1 | tee doxygen.log