Skip to content

ci(build): flip windows lane to self-hosted VM217 (fork-gated) - #617

Merged
frstrtr merged 7 commits into
masterfrom
ci-steward/windows-vm217-flip
Jul 4, 2026
Merged

ci(build): flip windows lane to self-hosted VM217 (fork-gated)#617
frstrtr merged 7 commits into
masterfrom
ci-steward/windows-vm217-flip

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Flips the windows build.yml job from GitHub-hosted windows-2022 to self-hosted c2pool-windows-217 (VM217) for internal PRs/pushes, with a fork fallback to windows-2022.

Evidence: toolchain probe run 28679257030 is green across all steps: Python 3.12, Conan 2, CMake, Git, MSVC/VS 2022 C++ build tools. Runner online with labels [self-hosted, X64, Windows, c2pool-build].

Changes:

Completes the #439 self-hosted migration -- Windows was the last GitHub-hosted C++ lane. Merge-gated on operator push-approval.

frstrtr added 7 commits July 3, 2026 22:45
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.
VM217 self-hosted has Python 3.12 pre-provisioned; the ungated
setup-python step re-extracted python via setup.ps1 and tripped a
machine ExecutionPolicy SecurityError (PSSecurityException). Gate it
to runner.environment == github-hosted, matching every Linux lane, so
self-hosted uses the pre-provisioned toolchain.
…h on service PATH)

The windows job self-hosted canary (run 28679621680, 9280bc1) passed the
gated setup-python skip but failed the next step: Install Conan 2 ran
shell:bash and VM217s runner-service account has no bash on PATH ->
"bash: command not found". Conan 2 is provisioned on VM217 (probe run
28679257030). Convert the step to shell:powershell, which resolves on
both the self-hosted lane and the fork-fallback windows-2022 lane.
VM217 Windows PowerShell runs at ExecutionPolicy=Restricted; the runner
cannot source its temp .ps1 command files (PSSecurityException /
UnauthorizedAccess), which failed the Install Conan step on run
28679851820. Set a job-level defaults.run.shell to the Bypass form proven
green by probe 28679257030, so all PowerShell steps (Install Conan, Detect
Conan profile, Conan install, Build secp256k1, Verify binary) inherit it;
the two cmd steps override locally.
…to GITHUB_PATH

VM217 does not expose conan on the runner-service PATH; the pre-provisioned
assumption caused CommandNotFoundException at Install Conan 2 (run 28680092936).
Install unconditionally and prepend the pip Scripts dir(s) via GITHUB_PATH so
this step and Detect profile / Conan install resolve the binary.
VM217 runner-service PATH exposes python (3.12) but not the bare pip
launcher, so "pip install" hit CommandNotFoundException. Invoke pip via
its module entrypoint, which resolves through the already-working python.
VM217 runner-service PATH exposes neither conan nor a bare python
(setup-python is gated off for self-hosted), so python -m pip hit
CommandNotFoundException. Resolve an interpreter ourselves (py ->
python3 -> python) with where.exe diagnostics on miss, and fix the
unquoted sysconfig.get_path(scripts) NameError.
@frstrtr
frstrtr force-pushed the ci-steward/windows-vm217-flip branch from 4295276 to 8c181ba Compare July 3, 2026 22:46
@frstrtr
frstrtr merged commit 3b5267d into master Jul 4, 2026
22 checks passed
frstrtr added a commit that referenced this pull request Jul 4, 2026
The concurrency group is per-ref (github.workflow-github.ref). On master,
every merge is a push to the same ref, so back-to-back merges share one
group and cancel-in-progress kills the prior merge in-flight rollup before
it verifies green. #626 (concurrency-groups) bit the #617 web-static lane
exactly this way: the last completed master CI run (28692641464) shows
Web-static verify=cancelled while Windows x86_64=success.

Gate cancel-in-progress to non-push events only. PR churn (rapid re-pushes
to a PR ref) still de-dupes and sheds the shared-pool OOM load that #626
targeted; master/release/tag runs always run to completion so a merged SHA
is actually verified. Fenced to the concurrency block, no job changes.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant