Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ env:
jobs:
# This workflow contains a single job called "Xaml-Style-Check"
Xaml-Style-Check:
runs-on: windows-2022
runs-on: windows-2025
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to consider just using windows-latest?

I know this would mean the runner could swap out from under us and disrupt the CI, but they already modify named images, and in this case an issue would more likely represent a deprecation that we should migrate from.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We pinned the runner because we haven't had the bandwidth to be proactive about moving ourselves to the latest as it changed under us.

For now, according to the github runner images docs, we have until the next GA release to get off of windows-2022 and onto windows-2025, so that we're not rug-pulled regarding windows-2022 for the whole image when the next windows-latest GA release happens after windows-2025.

The full window is between either:

  • Reactively catching-up so we don't find ourselves using EOL runners
  • Proactively updating (to the extent we can) so that we stay ahead of whatever the next windows-latest release is.

We're currently somewhere in the middle by pinning to windows-2025-- not at risk of using EOL, not at risk of using newer images with missing dependencies.

Regarding the way github updates the dependencies in the runner itself, they only explicitly spell out their deprecation policy (dependencies can be removed when they're EOL) but past behavior heavily implies that they don't intentionally remove dependencies on existing runners otherwise.

Let's stay pinned to a specific runner version for now.


# Steps represent a sequence of tasks that will be executed as part of the job
steps:
Expand Down Expand Up @@ -191,6 +191,10 @@ jobs:
copy ./tooling/.config/dotnet-tools.json ./.config/dotnet-tools.json
mkdir ./components

- name: Install Windows SDKs
shell: pwsh
run: ./tooling/Install-WindowsSdk.ps1

- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2

Expand Down
10 changes: 10 additions & 0 deletions Install-WindowsSdk.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

$WinSdkTempDir = "C:\WinSdkTemp\"
$WinSdkSetupExe = "C:\WinSdkTemp\" + "WinSdkSetup.exe"

mkdir $WinSdkTempDir

$client = [System.Net.WebClient]::new()
$client.DownloadFile("https://go.microsoft.com/fwlink/p/?linkid=870807", $WinSdkSetupExe)

Start-Process -Wait $WinSdkSetupExe "/features OptionId.UWPCpp /q"
Loading