diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 651d849..7c71781 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -44,10 +44,24 @@ jobs: run: | sudo apt-get update -y sudo apt-get install -y cmake gcc moreutils + # --parallel 2 rather than a bare --parallel, and that bound is measured + # rather than cautious. All five jobs in this file say runs-on: + # ubuntu-latest and land on the same runner, so a bare --parallel asks for + # nproc compilers *per job* and the runner is handed five times that at + # once. Run #30 never showed it because akgl_build and coverage were still + # dying early; run #31 was the first push on which all five did real work + # simultaneously, and the sanitizers job went from a 55-second link phase + # to a 14-minute one -- individual `Linking C executable` steps taking two + # minutes each, starting at the exact second akgl_build began its SDL tree + # -- before the runner's Docker daemon fell over outright and took the job + # with it. That is memory exhaustion, and the only lever on it is the + # number of concurrent compiler and linker processes. Applied at all four + # build sites for the same reason; mutation_test drives its own builds + # through the harness and is not bounded here. - name: build run: | cmake -S . -B build - cmake --build build --parallel + cmake --build build --parallel 2 # The suite is 78 cases: 41 golden files byte-compared against the Go # reference's own corpus (checked in at tests/reference/, see its README), # 9 local golden cases for verbs the reference never implemented, 25 unit @@ -98,7 +112,7 @@ jobs: cmake -S . -B build-asan \ -DAKBASIC_SANITIZE=ON \ -DCMAKE_BUILD_TYPE=Debug - cmake --build build-asan --parallel + cmake --build build-asan --parallel 2 ctest --test-dir build-asan --output-on-failure - run: echo "🍏 This job's status is ${{ job.status }}." @@ -138,7 +152,7 @@ jobs: cmake -S . -B build-coverage \ -DAKBASIC_COVERAGE=ON \ -DCMAKE_BUILD_TYPE=Debug - cmake --build build-coverage --parallel + cmake --build build-coverage --parallel 2 ctest --test-dir build-coverage --output-on-failure mkdir -p build-coverage/coverage gcovr --root . --filter 'src/.*' \ @@ -254,7 +268,7 @@ jobs: - name: build with libakgl run: | cmake -S . -B build-akgl -DAKBASIC_WITH_AKGL=ON - cmake --build build-akgl --parallel + cmake --build build-akgl --parallel 2 # Dummy video and audio drivers, set per test by CMakeLists rather than in # this job's environment, because an AKGL build of `basic` is now an SDL # program and the golden cases run *it*: forty-one real windows is not what