Skip to content

Commit 4844107

Browse files
krotnameclaude
andcommitted
Compile release binaries on the self-hosted runner in Russia
The Russian software registry filing declares where the source is stored and where the product is compiled, so release binaries have to come off a machine that matches that declaration. The release build matrix (Win32, x64, ARM64) moves to the self-hosted runner (labels: self-hosted, windows, adler); CI_build, CodeQL, dependency review, and the compatibility smoke stay on GitHub-hosted runners. The workflow only starts on tag pushes and manual dispatch, so no pull request from a fork can execute code on that machine. Adds a manual Runner self-test workflow that builds every platform on the runner without publishing anything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 46aea85 commit 4844107

2 files changed

Lines changed: 56 additions & 2 deletions

File tree

.github/workflows/release.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@ jobs:
5151
5252
build:
5353
needs: version
54-
runs-on: windows-2022
55-
timeout-minutes: 30
54+
# Release binaries are compiled on the self-hosted runner in Russia, which is what the
55+
# Russian software registry filing declares as the compilation host. Pull request and CI
56+
# checks stay on GitHub-hosted runners; this workflow only starts on tag pushes and manual
57+
# dispatch, so no fork code can reach the machine.
58+
runs-on: [self-hosted, windows, adler]
59+
timeout-minutes: 90
5660
strategy:
5761
fail-fast: false
5862
matrix:
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Runner self-test
2+
3+
# Manual check that the self-hosted release runner can still build the plugin for every
4+
# platform. It never publishes anything: no release, no artifacts, no attestation.
5+
6+
on:
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
selftest:
14+
runs-on: [self-hosted, windows, adler]
15+
timeout-minutes: 90
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
platform: [Win32, x64, ARM64]
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
23+
with:
24+
persist-credentials: false
25+
26+
- name: Add msbuild to PATH
27+
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3
28+
29+
- name: Ensure ARM64 C++ build tools
30+
if: matrix.platform == 'ARM64'
31+
shell: pwsh
32+
run: .\scripts\Ensure-VsArm64Tools.ps1
33+
34+
- name: Report runner environment
35+
shell: pwsh
36+
run: |
37+
"runner: $env:RUNNER_NAME"
38+
"host: $env:COMPUTERNAME"
39+
"os: " + (Get-CimInstance Win32_OperatingSystem).Caption
40+
"cpu: " + (Get-CimInstance Win32_Processor | Select-Object -First 1 -ExpandProperty Name)
41+
"ram_gb: " + [math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB)
42+
"free_disk_gb: " + [math]::Round((Get-PSDrive C).Free / 1GB)
43+
msbuild -version
44+
45+
- name: Build package
46+
run: msbuild Package.proj /m /t:Package /p:Configuration=Release /p:Platform="${{ matrix.platform }}"
47+
48+
- name: Report produced artifacts
49+
shell: pwsh
50+
run: Get-ChildItem build -File -Filter *.zip | ForEach-Object { "{0} {1} bytes" -f $_.Name, $_.Length }

0 commit comments

Comments
 (0)