diff --git a/.gitea/docker/Dockerfile.ci-cpp b/.gitea/docker/Dockerfile.ci-cpp index 34ae917..dca81f3 100644 --- a/.gitea/docker/Dockerfile.ci-cpp +++ b/.gitea/docker/Dockerfile.ci-cpp @@ -10,6 +10,7 @@ RUN apt-get update -qq && \ curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ apt-get install -y --no-install-recommends \ nodejs \ + doxygen \ cmake \ build-essential \ git \ diff --git a/.gitea/workflows/cpp-tests.yml b/.gitea/workflows/cpp-tests.yml index 05db3ce..f35369d 100644 --- a/.gitea/workflows/cpp-tests.yml +++ b/.gitea/workflows/cpp-tests.yml @@ -63,7 +63,12 @@ jobs: runs-on: eulernest container: image: git.eulernest.eu/conformallab/ci-cpp:latest - options: "--memory=1400m --memory-swap=1400m" + # Memory bumped from 1400m → 1600m to avoid OOM during CGAL header + # compilation on ARM64 (CGAL + Eigen templates allocate ~700 MB per + # cc1plus instance; -j1 leaves a small margin). + # memory-swap == memory disables swap entirely so OOM fails fast + # rather than thrashing on the SD card. + options: "--memory=1600m --memory-swap=1600m" steps: - uses: actions/checkout@v4 @@ -72,7 +77,7 @@ jobs: run: cmake -S code -B build -DWITH_CGAL_TESTS=ON -DCMAKE_BUILD_TYPE=Release - name: Build CGAL-Tests - run: nice -n 19 cmake --build build --target conformallab_cgal_tests -j2 + run: nice -n 19 cmake --build build --target conformallab_cgal_tests -j1 - name: Run CGAL-Tests run: > diff --git a/.gitea/workflows/doc-build.yaml b/.gitea/workflows/doc-build.yaml new file mode 100644 index 0000000..dc4216b --- /dev/null +++ b/.gitea/workflows/doc-build.yaml @@ -0,0 +1,56 @@ +name: API Docs + +on: + push: + branches: + - main + pull_request: + +# ───────────────────────────────────────────────────────────────────────────── +# 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. +# +# 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`. +# ───────────────────────────────────────────────────────────────────────────── +jobs: + doc-build: + if: github.event_name == 'pull_request' + 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 + + - name: Generate API documentation + run: doxygen Doxyfile 2>&1 | tee doxygen.log + + - name: Summarise warnings + if: always() + run: | + if [ -f doc/doxygen/doxygen-warnings.log ]; then + warn=$(wc -l < doc/doxygen/doxygen-warnings.log) + echo "DOC ▸ Doxygen warnings: $warn" + echo "" + echo "First 20 warnings:" + head -20 doc/doxygen/doxygen-warnings.log + else + echo "DOC ▸ No warning log produced — check that Doxyfile WARN_LOGFILE points to doc/doxygen/doxygen-warnings.log" + fi + + - name: Report HTML output + if: always() + run: | + if [ -d doc/doxygen/html ]; then + files=$(find doc/doxygen/html -type f | wc -l) + size=$(du -sh doc/doxygen/html | cut -f1) + echo "DOC ▸ HTML output: $files files, $size total" + fi