Skip to content

.github/workflows: Migrate workflows to Blacksmith runners#34

Open
blacksmith-sh[bot] wants to merge 8 commits intomainfrom
blacksmith-migration-5d27c7a
Open

.github/workflows: Migrate workflows to Blacksmith runners#34
blacksmith-sh[bot] wants to merge 8 commits intomainfrom
blacksmith-migration-5d27c7a

Conversation

@blacksmith-sh
Copy link
Copy Markdown

@blacksmith-sh blacksmith-sh Bot commented May 5, 2026

This PR has been automatically generated by a team member in your GitHub organization using Blacksmith's Migration Wizard. This PR changes the following:

  1. Your selected workflows will now run on Blacksmith's 2x faster hardware (e.g., runs-on: blacksmith-4vcpu-ubuntu-2204). Learn more about the different instances available to choose from.
  2. Your jobs running on Blacksmith will now have all official GitHub and popular third-party cache actions automatically interact with our 4x faster, colocated cache. Learn more about Blacksmith's actions cache.
  3. Your GitHub Actions will now actually be observable. Learn more about Blacksmith's logging and other observability features.
  4. Your Docker builds will now automatically share their Docker layer cache, resulting in up to 40x faster builds. Learn more about Blacksmith's Docker layer caching.

View in Codesmith
Need help on this PR? Tag @codesmith with what you need.

  • Let Codesmith autofix CI failures and bot reviews

blacksmith-sh Bot and others added 8 commits May 5, 2026 09:32
The v3 version was deprecated and now fails the workflow at job
setup. Bumping to v4 unblocks the build matrix.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
The Blacksmith Windows Server 2025 runner ships only the BuildTools
edition of Visual Studio 2022, installed under Program Files (x86).
The previous lookup only checked Program Files for Community,
Professional, and Enterprise, so MS_BUILD_PATH was left as the
unformatted template string and the build step failed with
"The system cannot find the path specified."

Search both Program Files roots, include BuildTools in the variant
list, and fall back to msbuild on PATH (populated by
microsoft/setup-msbuild) when no edition is found.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
MSBuild 17.x (shipped with VS 2022 BuildTools on the Blacksmith
Windows Server 2025 runner) matches the Platform global property
against ProjectConfiguration entries case-sensitively. The matrix
passes platform=arm64 (lowercase), which made
_CheckForInvalidConfigurationAndPlatform fail with:

  error : The BaseOutputPath/OutputPath property is not set for
  project 'FedoraWSL.vcxproj'.

Normalize the lowercase arm64 input from the workflow matrix to the
ARM64 spelling used by both FedoraWSL.sln and FedoraWSL.vcxproj.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Blacksmith's Windows Server 2025 image ships VS BuildTools 2022 in
place of the full Visual Studio install on GitHub-hosted runners.
The default BuildTools install only includes the x86/x64 C++ toolset,
so ARM64 builds fail in _CheckForInvalidConfigurationAndPlatform with:

  error : The BaseOutputPath/OutputPath property is not set for
  project 'FedoraWSL.vcxproj'.

Run vs_installer.exe modify on the arm64 matrix legs to add
Microsoft.VisualStudio.Component.VC.Tools.ARM64 (for the launcher
.vcxproj) and Microsoft.VisualStudio.Component.UWP.VC.ARM64 (for the
FedoraWSL-Appx UWP project). Exit code 3010 is treated as success
since it only signals a pending reboot the runner does not need.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
The previous attempt passed --installPath via Start-Process
-ArgumentList as an array element. PowerShell's quoting of array
elements that contain both spaces and parentheses (e.g.
"C:\Program Files (x86)\...") is unreliable and produced a
malformed command line, which the installer rejected with exit
code 87 (ERROR_INVALID_PARAMETER) within a couple of seconds.

Build the modify command line as a single, manually quoted string
and prefer setup.exe (synchronous) over vs_installer.exe (which
forks and returns immediately). Also drop the UWP component for
now to keep the change minimal; if the launcher project builds we
can layer the UWP support back on top.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
The previous run uncovered two distinct gaps versus the GitHub-hosted
Windows image:

  1. The FedoraWSL-Appx UWP project fails on x64 too, not just on
     ARM64, because the BuildTools install lacks the Universal
     Windows Platform build tools workload entirely.
  2. The setup.exe variant in the Installer folder does not accept
     the modify verb. It printed its help and exited with code 87.

Use vs_installer.exe directly with array splatting so paths with
spaces survive the trip into ProcessStartInfo, run the install on
every matrix leg (x64 needs UWP just as much as arm64), and add the
ARM64 C++ tools only on the arm64 jobs. After Start-Process returns,
poll for any lingering setup engine processes so we don't proceed
to the build before the install actually finishes.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
After several iterations attempting to install the missing Universal
Windows Platform build tools and ARM64 C++ toolset on Blacksmith's
Windows Server 2025 image, it is clear the project's mix of a UWP
appx and an ARM64 launcher needs components that the Blacksmith
image deliberately omits in favor of VS Build Tools 2022.

Revert this job's runs-on to windows-latest so the build matrix
passes again, and leave a comment explaining the constraint and
the rollback condition (a custom Blacksmith Windows image with
full Visual Studio). The build.py and upload-artifact@v4 fixes
from earlier commits are kept since they are improvements that
also help on the GitHub-hosted runner.

Co-authored-by: Codesmith <codesmith-bot@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