ci(build): full self-hosted switch — Linux-905 (32c) + macOS M4/Intel + Windows-217, fork-gated - #439
Merged
Merged
Conversation
frstrtr
added a commit
that referenced
this pull request
Jun 24, 2026
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
frstrtr
added a commit
that referenced
this pull request
Jun 24, 2026
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
frstrtr
force-pushed
the
ci-steward/self-hosted-runners
branch
from
June 24, 2026 19:24
36fb6b5 to
13d55e4
Compare
frstrtr
added a commit
that referenced
this pull request
Jun 24, 2026
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
frstrtr
force-pushed
the
ci-steward/self-hosted-runners
branch
from
June 24, 2026 21:07
13d55e4 to
e285cb8
Compare
frstrtr
added a commit
that referenced
this pull request
Jun 24, 2026
…romium Two self-hosted-environment gaps on the #439 switch (not code): - Linux x86_64 + ASan twin: reused workspace left a stale build_ci/ build_asan, so ctest re-included empty gtest_discover_tests POST_BUILD files -> Unknown CMake command gtest_discover_tests_impl, exit 8. Add a self-hosted-only clean of each Linux build dir before configure (ccache keeps recompiles fast). Applied to all five Linux C++ lanes. - Web-static verify: VM905 only ships snap chromium, which will not launch under the runner systemd cgroup (not a snap cgroup). Provision a real Chrome-for-Testing via @puppeteer/browsers on self-hosted; keep apt path for github-hosted. Harness already passes --no-sandbox.
frstrtr
added a commit
that referenced
this pull request
Jun 25, 2026
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
frstrtr
added a commit
that referenced
this pull request
Jun 25, 2026
…romium Two self-hosted-environment gaps on the #439 switch (not code): - Linux x86_64 + ASan twin: reused workspace left a stale build_ci/ build_asan, so ctest re-included empty gtest_discover_tests POST_BUILD files -> Unknown CMake command gtest_discover_tests_impl, exit 8. Add a self-hosted-only clean of each Linux build dir before configure (ccache keeps recompiles fast). Applied to all five Linux C++ lanes. - Web-static verify: VM905 only ships snap chromium, which will not launch under the runner systemd cgroup (not a snap cgroup). Provision a real Chrome-for-Testing via @puppeteer/browsers on self-hosted; keep apt path for github-hosted. Harness already passes --no-sandbox.
frstrtr
force-pushed
the
ci-steward/self-hosted-runners
branch
from
June 25, 2026 04:40
8d05ef2 to
bcee602
Compare
frstrtr
added a commit
that referenced
this pull request
Jun 25, 2026
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
frstrtr
force-pushed
the
ci-steward/self-hosted-runners
branch
from
June 25, 2026 21:46
bcee602 to
12af779
Compare
frstrtr
added a commit
that referenced
this pull request
Jun 25, 2026
…romium Two self-hosted-environment gaps on the #439 switch (not code): - Linux x86_64 + ASan twin: reused workspace left a stale build_ci/ build_asan, so ctest re-included empty gtest_discover_tests POST_BUILD files -> Unknown CMake command gtest_discover_tests_impl, exit 8. Add a self-hosted-only clean of each Linux build dir before configure (ccache keeps recompiles fast). Applied to all five Linux C++ lanes. - Web-static verify: VM905 only ships snap chromium, which will not launch under the runner systemd cgroup (not a snap cgroup). Provision a real Chrome-for-Testing via @puppeteer/browsers on self-hosted; keep apt path for github-hosted. Harness already passes --no-sandbox.
frstrtr
added a commit
that referenced
this pull request
Jun 26, 2026
…ad hang) Self-hosted runner provisions a fresh Chrome-for-Testing build via @puppeteer/browsers; under it page.goto(waitUntil:load) never fires the load event within 15s because a non-essential subresource (favicon) stays pending, failing Web-static verify on #439 only. The four dashboard scripts are synchronous head scripts (executed by DOMContentLoaded) and #defrag-canvas is gated by the explicit waitForSelector, so switching to domcontentloaded is render-correct and cannot regress the GitHub-hosted apt-chrome run on master.
…rk fallback Point the Windows job at the self-hosted runner (VM217, labels self-hosted/Windows/X64/c2pool-build) for internal-branch PRs and pushes; fork PRs fall back to GitHub-hosted windows-2022 so untrusted code never executes on the self-hosted box. Completes the self-hosted build fleet (Linux pending VM905 runner registration; macOS x86_64 already self-hosted via #100). Conan cache retained.
…) + sccache Repoint the macOS arm64 matrix lane to the self-hosted M4 Mac mini (label c2pool-mac-arm) on push and internal-branch PRs, with a GitHub-hosted fork fallback to macos-14 — same fork-gate shape as the Windows lane in this branch. Add sccache compiler launcher (persists across self-hosted runs; no-op-safe on the hosted fallback). Linux (VM905) leg held separately until that runner is registered.
… + ccache Apply the #439 fork-gate to every ubuntu-24.04 job: push/internal-branch PRs run on [self-hosted, Linux, X64, c2pool-build] (VM905, 32 cores); fork PRs fall back to GitHub-hosted ubuntu-24.04. Build stays -j$(nproc) (=32 on the box). Wire ccache as the C/C++ compiler launcher on the six C++ build lanes (linux, linux-asan, coin-bch, coin-bch-asan, qt, dgb-auxdoge) and add the ccache package to their apt lists so the binary is present on both self-hosted and fork-fallback runners. Completes the all-lane self-hosted switch (Linux+macOS+Windows).
VM217 (c2pool-windows-217) is a bare self-hosted runner with no build toolchain — no cmake, no MSVC/VS 2022, no SDK — so the Windows lane fails at configure. GitHub-hosted windows-2022 ships all of it. Keep Linux (8 lanes -> VM905) and macOS (M4/Intel) on the self-hosted fleet with the fork-gate; only the Windows job falls back to github-hosted. Follow-up PR will flip Windows back to the fork-gated self-hosted expr once VM217 has the VS 2022 Build Tools C++ workload + cmake + deps installed and builds c2pool clean.
VM905 now hosts 4 parallel self-hosted runners sharing one ccache. Cap per-job cmake/ctest parallelism at -j8 so 4 concurrent Linux jobs total 32 threads on the 32-core box instead of 4x nproc(32)=128 = thrash. macOS (sysctl hw.ncpu) and Windows (NUMBER_OF_PROCESSORS) lanes unchanged; ccache retained for cross-job warm hits.
VM905 runs 4 parallel self-hosted runners; concurrent apt-get install collided on /var/lib/dpkg/lock-frontend (exit 100), failing 6/7 Linux lanes. Core build deps are pre-provisioned by vm-fleet, so gate the 5 Install system dependencies steps to runner.environment == github-hosted (skip on self-hosted, still run on fork fallback). Chromium and Qt6 are not in the provisioned set, so keep their apt but flock-serialize across the 4 runners via /tmp/c2pool-apt.lock.
…romium Two self-hosted-environment gaps on the #439 switch (not code): - Linux x86_64 + ASan twin: reused workspace left a stale build_ci/ build_asan, so ctest re-included empty gtest_discover_tests POST_BUILD files -> Unknown CMake command gtest_discover_tests_impl, exit 8. Add a self-hosted-only clean of each Linux build dir before configure (ccache keeps recompiles fast). Applied to all five Linux C++ lanes. - Web-static verify: VM905 only ships snap chromium, which will not launch under the runner systemd cgroup (not a snap cgroup). Provision a real Chrome-for-Testing via @puppeteer/browsers on self-hosted; keep apt path for github-hosted. Harness already passes --no-sandbox.
… (PRE_TEST exit-8 fix) The plain Linux x86_64 and AsAN+UBSan lanes failed at ctest with exit 8: CMake Error at build_*/test/test_dgb_subsidy[1]_include.cmake:6 Unknown CMake command "gtest_discover_tests_impl". preceded by "include() given empty file name (ignored)". include(GoogleTest) sets _GOOGLETEST_DISCOVER_TESTS_SCRIPT (the path to GoogleTestAddTests.cmake). It was at line ~176, AFTER the first three gtest_discover_tests() calls (test_dgb_subsidy/coinbase_value/utxo, all DISCOVERY_MODE PRE_TEST). In PRE_TEST the generated <tgt>[1]_include.cmake includes that script at ctest time to define gtest_discover_tests_impl; with the var unset the include path was empty and ctest aborted. The clean-build-dir step (8d05ef2) removed the cached _tests.cmake that had masked the broken else-branch, surfacing it on the first PRE_TEST target. Fix: hoist include(GoogleTest) to the top of the BUILD_TESTING block.
…ad hang) Self-hosted runner provisions a fresh Chrome-for-Testing build via @puppeteer/browsers; under it page.goto(waitUntil:load) never fires the load event within 15s because a non-essential subresource (favicon) stays pending, failing Web-static verify on #439 only. The four dashboard scripts are synchronous head scripts (executed by DOMContentLoaded) and #defrag-canvas is gated by the explicit waitForSelector, so switching to domcontentloaded is render-correct and cannot regress the GitHub-hosted apt-chrome run on master.
The self-hosted switch routed the sub-minute Web-static verify job onto the c2pool-build Linux runner along with the heavy C++ lanes. The puppeteer pixel-regression harness cannot complete page navigation there: page.goto times out at 15s under both load and domcontentloaded waitUntil, because the self-hosted runner environment never fires the navigation-complete event for dashboard.html. The job is green on ubuntu-24.04 and gains nothing from the 32-core box, so pin it back to GitHub-hosted. Dashboard-owned web-static assets and the visual harness are unchanged and not the cause.
frstrtr
force-pushed
the
ci-steward/self-hosted-runners
branch
from
June 26, 2026 14:24
83df6b0 to
40e4eb0
Compare
frstrtr
added a commit
that referenced
this pull request
Jul 3, 2026
VM217 (c2pool-windows-217) toolchain probe run 28679257030 is green across Python 3.12, Conan 2, CMake, Git and MSVC/VS 2022 C++ build tools. Route internal PRs/pushes to the self-hosted runner via the #439 fork-gate expr; fork PRs keep GitHub-hosted windows-2022. setup-python gated to github-hosted so VM217 uses its pre-provisioned interpreter. Last GitHub-hosted C++ lane.
frstrtr
added a commit
that referenced
this pull request
Jul 13, 2026
ci(release): repoint macOS/Windows/checksums to self-hosted runners (finish #439)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires the Windows leg of the self-hosted build fleet.
Fleet status:
Merge-gated: do NOT merge until verified green on the self-hosted runner + fork-fallback confirmed + before/after timing, per integrator. github-hosted stays the fallback.