@@ -33,15 +33,15 @@ jobs:
3333 name : ' determine runners'
3434 runs-on : ubuntu-latest
3535 outputs :
36- use-cirrus-runners : ${{ steps.runners.outputs.use-cirrus-runners }}
36+ provider : ${{ steps.runners.outputs.provider }}
3737 steps :
3838 - id : runners
3939 run : |
4040 if [[ "${REPO_USE_CIRRUS_RUNNERS}" == "${{ github.repository }}" ]]; then
41- echo "use-cirrus-runners=true " >> "$GITHUB_OUTPUT"
41+ echo "provider=cirrus " >> "$GITHUB_OUTPUT"
4242 echo "::notice title=Runner Selection::Using Cirrus Runners"
4343 else
44- echo "use-cirrus-runners=false " >> "$GITHUB_OUTPUT"
44+ echo "provider=gha " >> "$GITHUB_OUTPUT"
4545 echo "::notice title=Runner Selection::Using GitHub-hosted runners"
4646 fi
4747
@@ -105,7 +105,7 @@ jobs:
105105 name : ${{ matrix.job-name }}
106106 # Use any image to support the xcode-select below, but hardcode version to avoid silent upgrades (and breaks).
107107 # See: https://github.com/actions/runner-images#available-images.
108- runs-on : macos-14
108+ runs-on : macos-15
109109
110110 # When a contributor maintains a fork of the repo, any pull request they make
111111 # to their own fork, or to the main repository, will trigger two CI runs:
@@ -123,10 +123,10 @@ jobs:
123123 include :
124124 - job-type : standard
125125 file-env : ' ./ci/test/00_setup_env_mac_native.sh'
126- job-name : ' macOS 14 native, arm64 , no depends, sqlite only, gui'
126+ job-name : ' macOS native, no depends, sqlite only, gui'
127127 - job-type : fuzz
128128 file-env : ' ./ci/test/00_setup_env_mac_native_fuzz.sh'
129- job-name : ' macOS 14 native, arm64 , fuzz'
129+ job-name : ' macOS native, fuzz'
130130
131131 env :
132132 DANGER_RUN_CI_ON_HOST : 1
@@ -145,8 +145,8 @@ jobs:
145145 # Use the earliest Xcode supported by the version of macOS denoted in
146146 # doc/release-notes-empty-template.md and providing at least the
147147 # minimum clang version denoted in doc/dependencies.md.
148- # See: https://developer.apple.com/documentation/xcode-release-notes/xcode-15 -release-notes
149- sudo xcode-select --switch /Applications/Xcode_15 .0.app
148+ # See: https://developer.apple.com/documentation/xcode-release-notes/xcode-16 -release-notes
149+ sudo xcode-select --switch /Applications/Xcode_16 .0.app
150150 clang --version
151151
152152 - name : Install Homebrew packages
@@ -211,11 +211,16 @@ jobs:
211211 steps :
212212 - *CHECKOUT
213213
214- - name : Configure Developer Command Prompt for Microsoft Visual C++
215- # Using microsoft/setup-msbuild is not enough.
216- uses : ilammy/msvc-dev-cmd@v1
217- with :
218- arch : x64
214+ - &SET_UP_VS
215+ name : Set up VS Developer Prompt
216+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
217+ run : |
218+ $vswherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
219+ $installationPath = & $vswherePath -latest -property installationPath
220+ & "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x64 -no_logo && set" | foreach-object {
221+ $name, $value = $_ -split '=', 2
222+ echo "$name=$value" >> $env:GITHUB_ENV
223+ }
219224
220225 - name : Get tool information
221226 shell : pwsh
@@ -263,14 +268,26 @@ jobs:
263268 run : |
264269 cmake --build . -j $NUMBER_OF_PROCESSORS --config Release
265270
266- - name : Get bitcoind manifest
271+ - name : Check executable manifests
267272 if : matrix.job-type == 'standard'
268273 working-directory : build
274+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
269275 run : |
270- mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -out:bitcoind.manifest
271- cat bitcoind.manifest
272- echo
273- mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -validate_manifest
276+ mt.exe -nologo -inputresource:bin\Release\bitcoind.exe -out:bitcoind.manifest
277+ Get-Content bitcoind.manifest
278+
279+ Get-ChildItem -Filter "bin\Release\*.exe" | ForEach-Object {
280+ $exeName = $_.Name
281+
282+ # Skip as they currently do not have manifests
283+ if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe" -or $exeName -eq "test_bitcoin-qt.exe" -or $exeName -eq "test_kernel.exe" -or $exeName -eq "bitcoin-chainstate.exe") {
284+ Write-Host "Skipping $exeName (no manifest present)"
285+ return
286+ }
287+
288+ Write-Host "Checking $exeName"
289+ & mt.exe -nologo -inputresource:$_.FullName -validate_manifest
290+ }
274291
275292 - name : Run test suite
276293 if : matrix.job-type == 'standard'
@@ -313,7 +330,7 @@ jobs:
313330 windows-cross :
314331 name : ' Linux->Windows cross, no tests'
315332 needs : runners
316- runs-on : ${{ needs.runners.outputs.use-cirrus-runners == 'true ' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' || 'ubuntu-24.04' }}
333+ runs-on : ${{ needs.runners.outputs.provider == 'cirrus ' && 'ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-sm' || 'ubuntu-24.04' }}
317334 if : ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
318335
319336 env :
@@ -333,7 +350,7 @@ jobs:
333350 - name : Configure Docker
334351 uses : ./.github/actions/configure-docker
335352 with :
336- use-cirrus : ${{ needs.runners.outputs.use-cirrus-runners }}
353+ cache-provider : ${{ needs.runners.outputs.provider }}
337354
338355 - name : CI script
339356 run : ./ci/test_run_all.sh
@@ -371,19 +388,26 @@ jobs:
371388 - name : Run bitcoind.exe
372389 run : ./bin/bitcoind.exe -version
373390
374- - name : Find mt.exe tool
375- shell : pwsh
376- run : |
377- $sdk_dir = (Get-ItemProperty 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots' -Name KitsRoot10).KitsRoot10
378- $sdk_latest = (Get-ChildItem "$sdk_dir\bin" -Directory | Where-Object { $_.Name -match '^\d+\.\d+\.\d+\.\d+$' } | Sort-Object Name -Descending | Select-Object -First 1).Name
379- "MT_EXE=${sdk_dir}bin\${sdk_latest}\x64\mt.exe" >> $env:GITHUB_ENV
391+ - *SET_UP_VS
380392
381- - name : Get bitcoind manifest
382- shell : pwsh
393+ - name : Check executable manifests
394+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
383395 run : |
384- & $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest
396+ mt.exe -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest
385397 Get-Content bitcoind.manifest
386- & $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -validate_manifest
398+
399+ Get-ChildItem -Filter "bin\*.exe" | ForEach-Object {
400+ $exeName = $_.Name
401+
402+ # Skip as they currently do not have manifests
403+ if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe" -or $exeName -eq "test_kernel.exe") {
404+ Write-Host "Skipping $exeName (no manifest present)"
405+ return
406+ }
407+
408+ Write-Host "Checking $exeName"
409+ & mt.exe -nologo -inputresource:$_.FullName -validate_manifest
410+ }
387411
388412 - name : Run unit tests
389413 # Can't use ctest here like other jobs as we don't have a CMake build tree.
@@ -423,7 +447,7 @@ jobs:
423447 ci-matrix :
424448 name : ${{ matrix.name }}
425449 needs : runners
426- runs-on : ${{ needs.runners.outputs.use-cirrus-runners == 'true ' && matrix.cirrus-runner || matrix.fallback-runner }}
450+ runs-on : ${{ needs.runners.outputs.provider == 'cirrus ' && matrix.cirrus-runner || matrix.fallback-runner }}
427451 if : ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }}
428452 timeout-minutes : ${{ matrix.timeout-minutes }}
429453
@@ -440,6 +464,7 @@ jobs:
440464 fallback-runner : ' ubuntu-24.04-arm'
441465 timeout-minutes : 120
442466 file-env : ' ./ci/test/00_setup_env_arm.sh'
467+ provider : ' gha'
443468
444469 - name : ' ASan + LSan + UBSan + integer, no depends, USDT'
445470 cirrus-runner : ' ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md' # has to match container in ci/test/00_setup_env_native_asan.sh for tracing tools
@@ -514,7 +539,7 @@ jobs:
514539 - name : Configure Docker
515540 uses : ./.github/actions/configure-docker
516541 with :
517- use-cirrus : ${{ needs.runners.outputs.use-cirrus-runners }}
542+ cache-provider : ${{ matrix.provider || needs.runners.outputs.provider }}
518543
519544 - name : Enable bpfcc script
520545 if : ${{ env.CONTAINER_NAME == 'ci_native_asan' }}
@@ -551,7 +576,7 @@ jobs:
551576 - name : Configure Docker
552577 uses : ./.github/actions/configure-docker
553578 with :
554- use-cirrus : ${{ needs.runners.outputs.use-cirrus-runners }}
579+ cache-provider : ${{ needs.runners.outputs.provider }}
555580
556581 - name : CI script
557582 run : |
0 commit comments