Skip to content

Windows Server 2025 is now available #11228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 of 14 tasks
shamil-mubarakshin opened this issue Dec 19, 2024 · 32 comments
Open
3 of 14 tasks

Windows Server 2025 is now available #11228

shamil-mubarakshin opened this issue Dec 19, 2024 · 32 comments

Comments

@shamil-mubarakshin
Copy link
Contributor

shamil-mubarakshin commented Dec 19, 2024

Breaking changes

Windows Server 2025 is now available for GitHub Actions and Azure DevOps users.
You can use the windows-2025 image label in your YAML to select this image.

GitHub Actions

jobs:
  jobName:
    runs-on: windows-2025

Azure DevOps

pool:
  vmImage: windows-2025

The image is marked as "beta" for now. It means some software can be unstable on the new platform. Also, there could be queueing issues as the capacity will be balanced only throughout the next weeks.
Please report any problems with the new image to this repository.

Platforms affected

  • Azure DevOps
  • GitHub Actions

Runner images affected

  • Ubuntu 20.04
  • Ubuntu 22.04
  • Ubuntu 24.04
  • macOS 11
  • macOS 12
  • macOS 13
  • macOS 13 Arm64
  • macOS 14
  • macOS 14 Arm64
  • Windows Server 2019
  • Windows Server 2022
  • Windows Server 2025

Software difference between Windows Server 2022 and Windows Server 2025

Tool name Windows Server 2022 Windows Server 2025 Notes
Go
  • 1.20.* (cached)
  • 1.21.* (default)
  • 1.22.* (cached)
  • 1.23.* (cached)
  • 1.21.* (cached)
  • 1.22.* (cached)
  • 1.23.* (default)
If your use-case requires using any of these versions, consider using tasks to install Go on-flight:
Node.js
  • 16.* (cached)
  • 18.* (default)
  • 20.* (cached)
  • 22.* (cached)
  • 18.* (cached)
  • 20.* (cached)
  • 22.* (default)
If your use-case requires using any of these versions, consider using tasks to install Node.js on-flight:
Ruby
  • 3.0.* (default)
  • 3.1.* (cached)
  • 3.2.* (cached)
  • 3.1.* (cached)
  • 3.2.* (cached)
  • 3.3.* (default)
Python
  • 3.7.* (cached)
  • 3.8.* (cached)
  • 3.9.* (default)
  • 3.10.* (cached)
  • 3.11.* (cached)
  • 3.12.* (cached)
  • 3.9.* (default)
  • 3.10.* (cached)
  • 3.11.* (cached)
  • 3.12.* (cached)
  • 3.13.* (cached)
On GitHub Actions, actions/setup-python can install any version on-flight so this change doesn't impact users
PyPy
  • 2.7.* (cached)
  • 3.7.* (cached)
  • 3.8.* (cached)
  • 3.9.* (cached)
  • 3.10.* (cached)
  • 3.9.* (cached)
  • 3.10.* (cached)
Deprecated all the versions besides the most recent ones
LLVM 18.* 19.* Updated to the recent version
strawberryperl 5.32.1 5.40.0 Updated to the recent version
maven 3.8.* 3.9.* Updated to the recent version
InnoSetup latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
Mercurial 5.0.0 - Removed from the Windows Server 2025 image due to maintenance reasons.
mingw 12.2.0 14.2.0 Includes updates to
  • gcc
  • GNU gdb
  • GNU Binutils
NSIS 3.10 - Removed from the Windows Server 2025 image due to maintenance reasons.
openssl 1.1.1 3.4.0 Updated to the recent version
Azure Service Fabric runtime 9.1.1436.9590 10.1.2493.9590 Updated to the recent version
Azure Service Fabric SDK 6.1.1436 7.0.2712 Updated to the recent version
svn (tortoisesvn) latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
Alibaba Cloud CLI latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
bindgen latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
cargo-audit latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
cargo-outdated latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
cbindgen latest available - Removed from the Windows Server 2025 image due to maintenance reasons.
Java
  • 8.* (default)
  • 11.*
  • 17.*
  • 21.*
  • 8.*
  • 11.*
  • 17.* (default)
  • 21.*
Default Java switched to 17.* for Windows Server 2025 image.
PostgreSQL 14.12 17.* Updated to the recent version
MongoDB 5.0.* 7.0.* Updated to the recent version
Visual Studio components * Excluded
  • Component.Unreal.Android
  • Component.Xamarin
  • Microsoft.VisualStudio.Component.Windows10SDK.19041
  • Microsoft.VisualStudio.Component.Windows10SDK.20348
  • Microsoft.VisualStudio.Component.Windows11SDK.22000
Removed from the Windows Server 2025 image due to maintenance reasons.
.NET Core SDK
  • 6.*
  • 7.*
  • 8.*
  • 9*
  • 8.*
  • 9.*
Please consider using tasks to install any version on-flight:
PowerShell modules * Excluded
  • AzureRM
  • Azure
Removed from the Windows Server 2025 image due to maintenance reasons.
Android Command Line Tools 8.0 16.0 Updated to the recent version
Android SDK Build-tools
  • 34.0.0
  • 33.0.0
  • 33.0.1
  • 33.0.2
  • 33.0.3
  • 32.0.0
  • 31.0.0
  • 35.0.0
Updated to the recent version
Android cmake
    • 3.18.1
    • 3.22.1
    • 3.22.1
    • 3.30.5
Updated to the recent version
Cached Docker images
  • mcr.microsoft.com/windows/servercore:ltsc2022
  • mcr.microsoft.com/windows/nanoserver:ltsc2022
  • mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2022
  • mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2022
  • mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2022
- Removed from the Windows Server 2025 image due to maintenance reasons.

Miscellaneous:

  • Standalone WDK installation was deprecated. Starting with Visual Studio 17.12, the recommended way to install the WDK is via nuget
  • Only the latest version of Haskell will be installed on the image
  • Temporary user installer and its profile were removed from the image
  • mongo.exe shell has been removed from MongoDB since version 6
  • The following directories were compressed:
    • C:\Windows\assembly
    • C:\Windows\WinSxS
    • C:\Program Files\dotnet
    • C:\Program Files (x86)\Android
@dongle-the-gadget
Copy link

Is Windows SDK 10.0.22621 included in the Windows Server 2025 image? This issue says it is not but the README says it does.

@vedantmgoyal9
Copy link

WSLv2 on GitHub Actions is now supported. vedantmgoyal9/setup-wsl2#3

Is there any possibility WSLv2 can be enabled by default, instead of WSLv1?

@Kichura Kichura mentioned this issue Dec 19, 2024
16 tasks
@MikeMcC399
Copy link

MikeMcC399 commented Dec 19, 2024

Will you consider adding WMIC Feature on Demand to the windows-2025 runner?

For Microsoft Windows Servers, wmic has been deprecated since 2016 and it is not installed by default on Windows Server 2025 (see Features we're no longer developing).

Unfortunately there are some npm packages which rely on this deprecated facility and which have so far not followed migration advice from Microsoft.

The following issues have been raised for the respective npm modules:

Although it is theoretically possible to execute the following, it is a massively sized package that would be installed, so it is not really a practical workaround:

DISM /Online /Add-Capability /CapabilityName:WMIC~~~~

@ifarbod
Copy link

ifarbod commented Dec 20, 2024

Is there any possibility of having the ARM64 version in a separate image? (just like macos-15 / macos-15-arm64)

@janbrasna
Copy link

I believe there should be only one default Python, not two, right?

3.9.* (default)
3.10.* (cached)
3.11.* (cached)
3.12.* (default)
3.13.* (cached)

cclauss added a commit to nodejs/node-gyp that referenced this issue Jan 6, 2025
cclauss added a commit to cclauss/node-gyp that referenced this issue Jan 7, 2025
@shamil-mubarakshin
Copy link
Contributor Author

Is Windows SDK 10.0.22621 included in the Windows Server 2025 image?

I believe there should be only one default Python, not two, right?

@dongle-the-gadget, @janbrasna, thanks for highlighting the typos, updated software difference

Is there any possibility WSLv2 can be enabled by default, instead of WSLv1?

@vedantmgoyal9, image rollout with WSLv2 starts this week and will take a few days to complete.

Will you consider adding WMIC Feature on Demand to the windows-2025 runner?

@MikeMcC399, we have no plans on adding this particular deprecated feature to the image. The workaround you mentioned works in runtime via run: step (~8mins) or you could stick to the windows-2022, while package owners update the code.

Is there any possibility of having the ARM64 version in a separate image?

@ifarbod, there are no current plans on introducing Windows Server ARM64 images.

@vedantmgoyal9
Copy link

Any possibility of enabling WSLv2 on Windows 2022 runners as well?

@MikeMcC399
Copy link

@shamil-mubarakshin

Will you consider adding WMIC Feature on Demand to the windows-2025 runner?

@MikeMcC399, we have no plans on adding this particular deprecated feature to the image. The workaround you mentioned works in runtime via run: step (~8mins) or you could stick to the windows-2022, while package owners update the code.

Many thanks for your response. 🙂 I think this is the right decision not to support this deprecated feature, however I needed to ask you guys before going back to the owners of the packages which need updating.

legendecas pushed a commit to legendecas/node-gyp that referenced this issue Jan 13, 2025
legendecas pushed a commit to legendecas/node-gyp that referenced this issue Jan 13, 2025
@DavidXanatos
Copy link

DavidXanatos commented Feb 11, 2025

@HotCakeX

Well people will not stop using windows 7 I think the past few years without updates made that clear enough.
And with Sandboxie its at least somewhat less secure, if an application can only do a hand full of allowed hand picked syscalls its inherently more secure than if it can do all of them without restrictions.

Besides Sandboxie is not only for security, its also for compartmentalization, why junk your OS full of crappy software that will leave garbage behind, if you can instead install it in a sandbox and dispose of it in its entirety once you no longer want to use it.

PS: Just leave the old obsolete stuff in as is no updates no nothing, no work, and HDD space costs virtually nothing.
Better then being Violent and forcing People to upgrade against their will. IMHO

@sharpjs
Copy link

sharpjs commented Feb 11, 2025

When can we expect windows-2025 in Azure DevOps?

@nibanks
Copy link

nibanks commented Mar 7, 2025

I just created microsoft/msquic#4898 to try to move to using windows-2025 for our BVTs, but it's failing to build kernel mode drivers. Looking at your docs, I believe this is because of these missing components:

  • Windows Driver Kit 10.1.26100.2161
  • Windows Driver Kit Visual Studio Extension 10.0.26100.12

What's the status on these? This is blocking us from moving our builds (I will try to just move test execution for now).

@FH-Inway
Copy link

FH-Inway commented Mar 7, 2025

When can we expect windows-2025 in Azure DevOps?

For us, it became available yesterday.

@shamil-mubarakshin
Copy link
Contributor Author

When can we expect windows-2025 in Azure DevOps?

@sharpjs, windows-2025 became available for Azure DevOps Pipelines, announcement has been updated accordingly

So what are the plans for the 2019 runner and can we maybe keep it for many more years?

@DavidXanatos, per support policy we keep 2 latest Windows Server images as GA. windows-2025 will hit GA in the upcoming months, which will be shortly followed by windows-2019 deprecation announcement. windows-2019 will be fully offboarded in the second half of 2025.
Using self-hosted runners could be an alternative

I just created microsoft/msquic#4898 to try to move to using windows-2025 for our BVTs, but it's failing to build kernel mode drivers. Looking at your docs, I believe this is because of these missing components

@nibanks, could you open a separate issue, providing all the usual details and repro steps for us to check?

@nathan-roe-adesa
Copy link

nathan-roe-adesa commented Mar 11, 2025

I noticed wsl2 was installed in the windows-2025 agent in Azure DevOps pipelines and was hoping I could use it to run the Azure service bus emulator in my integration tests. I tried installing and setting up podman, but I'm getting an error when it tries to create the wsl distro. Do the agents not support nested virtualization?

For context, here's the error I'm getting:

WSL2 is not supported with your current machine configuration.

Please enable the "Virtual Machine Platform" optional component and ensure virtualization is enabled in the BIOS.

Enable "Virtual Machine Platform" by running: wsl.exe --install --no-distribution

For information please visit https://aka.ms/enablevirtualization

Error code: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED

@jsloan117
Copy link

When will Windows 2025 and Ubuntu 24.04 be available in Azure Managed DevOps Pools?

@schielc
Copy link

schielc commented Mar 26, 2025

To pickup the question from above: Is there any estimate, when windows-2025 will be available in Azure Managed DevOps Pools? Or is this not even planned?

@jsloan117
Copy link

When will Windows 2025 and Ubuntu 24.04 be available in Azure Managed DevOps Pools?

Ubuntu 24.04 is now available in MDP as of yesterday.

@Cyberboss
Copy link

Do we have a timeline of when this will replace windows-latest?

@MikeMcC399
Copy link

@dzilzReply
Copy link

When will it be available on Managed DevOps Pools? Will it also support Gen2 VMs like the new v6 series ?

@dzilzReply
Copy link

dzilzReply commented May 4, 2025

Also in Managed DevOps pool it doesn't show the image sizes, yet they define the disk size which is then used for pricing in Managed DevopsPool - is there a way to see the size of the image?
Mmh i guess I can answer this myself: this is the same image as used on Managed Self-hosted agent which have 14GB SSD, so since they are the same image they will also have 14GB SSD.

So in terms of pricing and performance, would you all here agree that this applies:

Standard HDD S4 32GB £1.18 (has no 16GB size) 500IOPS, 60MB/s
SSD Price E3 16GB £1.05/month 500IOPS, 100MB/s
Premium SSD P3 16GB £1.79 120IOPS, 25MB/s

So really in managed DevOps Pool for Performance I should select Standard SSD as a disk if I use the provided runner images, right?

Normally the requirement for Win 2022 Server is at least 32GB, so normally I would choose at least 64GB disk image, so if Microsoft cut things down really to a bare minimum than this would be great but would be nice to know where to see it so I can get my costs for a Managed DevOps Pool clear.

@SanKumSan
Copy link

Would you consider adding RabbitMq Message broker to the runner ?
Mainly for integration tests for micro-services with MongoDb and Rabbitmq.

@HotCakeX
Copy link

HotCakeX commented May 7, 2025

Can we have a minimal version of the Windows Server 2025 where only what is by default in the Windows Server 2025 ISO file exists and none of the 3rd party stuff is there?

I don't want to expose my build process to 3rd party programs installed on the runner. I always install my requirements and dependencies through Winget.

A default Windows Server 2025 runner would be really useful, pretty much just like how you get a pure Windows Server 2025 VM on Azure. Offering such runner costs less than what is available now since it has less maintenance.

@tapaolo
Copy link

tapaolo commented May 12, 2025

Now that WSL2 is the default Linux subsystem, will it finally be possible to run Linux containers using Docker, or to switch to Linux containers in Docker? This has been a frustrating limitation of the current Windows Server 2022-based image, which has forced DevOps engineers to build hacky integration test pipelines just to run integration tests relying on Linux-based containers like MySQL.

@hustcer
Copy link

hustcer commented May 12, 2025

Can the winget version been updated? Current version is v1.6.10121 which is a bit old

@HotCakeX
Copy link

HotCakeX commented May 14, 2025

Can the winget version been updated? Current version is v1.6.10121 which is a bit old

I have this step in my workflow that takes care of it

- name: Updating Winget
        shell: pwsh
        run: |
          Write-Host -Object "The version of the pre-installed Winget on the Runner:"
          Write-Host -Object (winget --version)

          # Retrieve the latest Winget release information
          $WingetReleases = Invoke-RestMethod -Uri 'https://api.github.com/repos/microsoft/winget-cli/releases'
          $LatestRelease = $WingetReleases | Select-Object -First 1
          # Direct links to the latest Winget release assets
          [string]$WingetURL = $LatestRelease.assets.browser_download_url | Where-Object -FilterScript { $_.EndsWith('.msixbundle') } | Select-Object -First 1
          [string]$WingetLicense = $LatestRelease.assets.browser_download_url | Where-Object -FilterScript { $_.EndsWith('License1.xml') } | Select-Object -First 1
          [string]$LatestWingetReleaseDependenciesZipURL = $LatestRelease.assets.browser_download_url | Where-Object -FilterScript { $_.EndsWith('DesktopAppInstaller_Dependencies.zip') } | Select-Object -First 1
          [hashtable]$Downloads = @{
              # 'Winget.msixbundle'                 = 'https://aka.ms/getwinget' This is updated slower than the GitHub release
              'DesktopAppInstaller_Dependencies.zip' = $LatestWingetReleaseDependenciesZipURL
              'Winget.msixbundle'                    = $WingetURL
              'License1.xml'                         = $WingetLicense
          }
          $Downloads.GetEnumerator() | ForEach-Object -Parallel {
              Invoke-RestMethod -Uri $_.Value -OutFile $_.Key
          }

          Expand-Archive -Path 'DesktopAppInstaller_Dependencies.zip' -DestinationPath .\ -Force
          # Get the paths to all of the dependencies
          [string[]]$DependencyPaths = (Get-ChildItem -Path .\x64 -Filter '*.appx' -File -Force).FullName

          # Required to update the Winget
          Stop-Process -Name WindowsTerminal -Force -ErrorAction Ignore

          Add-AppxProvisionedPackage -Online -PackagePath 'Winget.msixbundle' -DependencyPackagePath $DependencyPaths -LicensePath 'License1.xml'

          Add-AppPackage -Path 'Winget.msixbundle' -DependencyPath "$($DependencyPaths[0])", "$($DependencyPaths[1])" -ForceTargetApplicationShutdown -ForceUpdateFromAnyVersion

This was referenced May 17, 2025
@pseusys
Copy link

pseusys commented May 23, 2025

@tapaolo,

Now that WSL2 is the default Linux subsystem, will it finally be possible to run Linux containers using Docker, or to switch to Linux containers in Docker?

Even though I would be just as excited about this change as you are, I’m afraid it’s not gonna happen because of the difference between Docker Desktop (that is capable of running Linux containers using WSL2) and Docker Engine (that only supports Windows containers natively and apparently is installed on the runner).

which has forced DevOps engineers to build hacky integration test pipelines just to run integration tests relying on Linux-based containers like MySQL.

Since I’m struggling with a similar issue right now, do you have any examples or workarounds maybe?..

@vedantmgoyal9
Copy link

Now that WSL2 is the default Linux subsystem, will it finally be possible to run Linux containers using Docker, or to switch to Linux containers in Docker?

Even though I would be just as excited about this change as you are, I’m afraid it’s not gonna happen because of the difference between Docker Desktop (that is capable of running Linux containers using WSL2) and Docker Engine (that only supports Windows containers natively and apparently is installed on the runner).

You can use docker inside a WSL distro with the help of https://github.com/marketplace/actions/setup-wsl

victorlin added a commit to nextstrain/cli that referenced this issue May 30, 2025
Windows Server 2019 has been scheduled for deprecation and will be
removed by end of June.¹  I moved the build job to the next oldest
version, Windows Server 2022.

Windows Server 2025 was released in December 2024,² so test on it.

¹ <actions/runner-images#12045>
² <actions/runner-images#11228>
victorlin added a commit to nextstrain/cli that referenced this issue May 30, 2025
Windows Server 2019 has been scheduled for deprecation and will be
removed by end of June.¹  I moved the build job to the next oldest
version, Windows Server 2022.

Windows Server 2025 was released in December 2024,² so test on it.

¹ <actions/runner-images#12045>
² <actions/runner-images#11228>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests