March 18th, 2025
10 reactions

Upcoming Updates for Azure Pipelines Agents Images

Update: The Ubuntu-20.04 retirement date for Microsoft-hosted agents has been moved to April 30. On Managed DevOps Pools, the ubuntu-20.04 image will be available up to June 30.

To ensure our hosted agents in Azure Pipelines are operating in the most secure and up-to-date environments, we continuously update the supported images and phase out older ones. In October 2024, we announced support for Ubuntu-24.04. Soon, we plan to update the ubuntu-latest image to map to Ubuntu-24.04. Additionally, MacOS 15 Sequoia and Windows 2025 images will be generally available later this year. Alongside these new releases, we will deprecate older images like Ubuntu-20.04 and Windows Server 2019. Please refer to the following subsections for detailed updates on individual images.

Ubuntu

Ubuntu-24.04

The Ubuntu-24.04 Pipelines image is available since October last year. We plan to update the ubuntu-latest image to map to Ubuntu-24.04 soon. After this change all the jobs using ubuntu-latest image will run on ubuntu-24.04 instead of ubuntu-22.04. Please note that some tools are no longer available on the Ubuntu-24.04 image.

Task/Tool Description
MSBuild@1 Task doesn’t work as Mono and MSBuild aren’t available for Ubuntu 24. Use native .NET on Ubuntu instead.
NuGetCommand@2 Task has reduced functionality as Mono and NuGet aren’t available for Ubuntu 24, see instructions on Migrating to .NET CLI on Ubuntu.
Terraform Terraform isn’t available on the ubuntu-24.04 image. You can use the Terraform extension and TerraformInstaller@1 task to make Terraform available in your pipeline.
Ubuntu 20.04
Deprecation plan for Ubuntu-20.04

We are deprecating support for the Ubuntu 20.04 image in Azure Pipelines because it will reach its end of support soon. Please find the deprecation plan for the same below.

Key Dates:

• Deprecation Start Date: March 19, 2025
• Brownout period: 19th March 2025 to 28th March 2025
• Full Removal Date: April 30th, 2025

What This Means for You:

Starting from March 18, 2025, organization using the Ubuntu 20.04 image will begin to see a banner indicating the upcoming deprecation. To raise awareness about the upcoming deprecation we will temporarily fail the jobs (brownout) that are using Ubuntu 20.04 from March 19th 2025 to April 8th 2025. From April 30, 2025, the Ubuntu 20.04 image will be fully removed from our hosted agents, and any pipelines still using this image will fail to run.

Brownout schedule

19th March 2025: 21:00 – 5:00 UTC
21st March 2025: 5:00 – 13:00 UTC
25th March 2025: 13:00 – 21:00 UTC
26th March 2025: 21:00 – 5:00 UTC
28th March 2025: 5:00 – 13:00 UTC
1st April 2025: 13:00 – 21:00 UTC
8th April 2025: 13:00 – 21:00 UTC

Recommended Actions:

To avoid disruptions, we recommend updating your pipelines to use the Ubuntu 22.04 or 24.04 image as soon as possible. The updated Ubuntu images offer improved performance, security, and support for the latest tools and libraries.

How to find out the impacted pipelines

To find out the impacted pipelines that are using the deprecated images please run the script present here.

You can also identify pipelines that are using a deprecated (e.g. ubuntu-20.04) image, by checking the following location: https://dev.azure.com/{organization}/{project}/_settings/agentqueues

Select the ‘Azure Pipelines’ pool, then, filter on the image name, refer the following snapshot.

Image FilterImageByVersion Blog

How to Update Your Pipelines:

1. Open your pipeline YAML file.
2. Locate the vmImage property.
3. Change the value from ubuntu-20.04 to ubuntu-22.04 (ubuntu-24.04, ubuntu-latest).
4. Save and run your pipeline to ensure it works with the new image.

Example:

pool:  
  vmImage: 'ubuntu-22.04'
pool:  
  vmImage: 'ubuntu-24.04'
pool:  
  vmImage: 'ubuntu-latest'
Alternate methods to use Ubuntu 20.04 in Pipeline Jobs

Customers that are still dependent on Ubuntu 20.04 even when it reaches its end of support state, have the following options to Use Ubuntu 20.04 in a pipeline:

Using a Container job allow you to specify a container image independently of the hosted pipeline image. For example:

jobs:
- job: ubuntu20
  container: ubuntu:20.04
  displayName: Use Ubuntu 20.04 container image
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - script: printenv

With Managed DevOps Pools, you can create an agent pool using the ubuntu-20.04 Azure Pipelines image until June 30. You can also use images from the Azure Marketplace.

Lastly, you can create a Self-hosted agent using any Operating System supported by the Pipelines Agent.

Windows

Windows Server 2025

The Windows Server 2025 image will be generally available starting June 16, 2025. Please note that “windows-latest” will continue to point to Windows 2022 for now.

Windows Server 2019

As Windows Server 2025 generally available now, we will initiate the deprecation of the Windows Server 2019 as Microsoft Hosted Agent image in Azure Pipelines. We recommend that if you use Windows Server 2019 image in a Microsoft Hosted Agent, you switch to Windows Server 2022 or Windows Server 2025 image.

Who is impacted

This deprecation affects Azure DevOps Pipeline customers only if they are using Windows Server 2019 image in a Microsoft Hosted Agent. Please note that it does not impact customers using Windows 2019 in any other Agent (Self-hosted, MDP, VMSS). Refer the guidelines given below to find out the impacted pipelines in your organization. The detailed deprecation plan is outlined below.

Key Dates:

• Deprecation Start Date: 1st June 2025
• Brownout period: 3rd June 2025 to 24th June 2025
• Full Removal Date: 30th June 2025

What This Means for You:

In the coming weeks, organizations will begin to see a banner indicating the upcoming deprecation of Windows Server 2019 hosted image. To further raise awareness, we will temporarily fail the jobs (brownout) that are using Windows Server 2019 images from 3rd June 2025 to 24th June 2025. From 1st July 2025 onwards, the Windows Server 2019 image will be fully removed from our hosted agents, and any pipeline jobs still using this image will fail to run. We recommend that our customers using Windows Server 2019 images in their pipeline jobs switch to Windows Server 2022 or Windows Server 2025 images.

Brownout schedule

• June 3 13:00 – 21:00 UTC
• June 10 13:00-21:00 UTC
• June 17 13:00-21:00 UTC
• June 24 13:00-21:00 UTC

How to find out the impacted pipelines

To find out the impacted pipelines that are using the deprecated images please run the script present here. You can also identify pipelines that are using a deprecated (e.g. Windows 2019) image, by checking the following location: https://dev.azure.com/{organization}/{project}/_settings/agentqueues
Select the ‘Azure Pipelines’ pool, then, filter on the image name, refer the following snapshot. Windows2019 image

Recommended Actions:

To avoid disruptions, we recommend updating your impacted pipelines to use the Windows Server 2022 or Windows Server 2025 image as soon as possible.

How to Update Your Pipelines:
  1. Open your pipeline YAML file.
  2. Locate the vmImage property.
  3. Change the value from windows-2019 to windows-2022 or windows-2025 or windows-latest.
  4. Save and run your pipeline to ensure it works with the new image.

Example:

pool:  
  vmImage: 'windows-2022'
pool:  
  vmImage: 'windows-2025'
pool:  
  vmImage: 'windows-latest'

mac-OS

mac-OS Sequoia

mac-OS 15 sequoia image is in public preview as of now and we plan to make it generally available in the coming weeks. Look out for further updates on this.

Apple silicon (ARM64) support for mac-OS image

We understand that there has been significant anticipation for Apple Silicon(ARM64) support in macOS images. We are pleased to inform you that we are currently conducting a private preview. If you want to participate in the private preview, please raise a ticket here. A public preview image is expected to be available later this year.

We understand that some of these changes may require some adjustments to your pipelines, and we are here to help. If you have any questions or need assistance, please reach out to our support team or visit our community forums.
Thank you for your understanding and cooperation as we continue to improve the Azure Pipelines experience.

Category
CI/CDDevOps

Author

Shubham Agarwal
Senior Product Manager
Eric van Wijk
Principal Product Manager

93 comments

Discussion is closed. Login to edit/delete existing comments.

  • Sibi Kumar (INFOSYS LIMITED)Microsoft employee

    Is there an alternate where we don’t have to own the maintenance or update the version every time there is an update.

    I see some options like ‘windows-latest’ and ‘ubuntu-latest’. Will that do the job?

    • Shubham AgarwalMicrosoft employee Author

      You can use windows-latest or ubuntu-latest, which will always point to the latest release of the respective operating system.

  • Ã…smund Grøstad

    We’re seeing this on our release pipelines, not just on our build pipelines. Those are edited in a GUI-editor, not yaml (at least I have not found a way to show yaml for them) – and I am struggeling with finding the setting for VM image here.

    • Ã…smund Grøstad

      We (finally) found out that we can select a deploy pipeline VM within the GUI-editor, by selecting the gray “Run on agent” node in our stages. None of us remembered that this thing existed. Not the easiest to find. I think it would be good to update the instructions with this.

      If we also had a way to edit the release pipelines in a yaml file or similar, this would also be a lot easier – but just finding the setting helps a lot.

      • Shubham AgarwalMicrosoft employee Author

        Thanks for pointing it out. As suggested in the below comment from David, we will be adding the steps to edit the image for the classic editor as well.

  • David Clough · Edited

    This post isn't too well explained IMO, and the number of down votes supports my initial terror that Windows 2019 as a web-hosting environment is being stopped at short notice (yes we are migrating anyway, but its a slow process).

    For many people who are pushing to web apps hosted on Server 2019, it is possible to continue this without issue just by changing the agent version in the pipeline settings.
    Note that for me, updating the YAML to was not enough, there was an extra step needed (and I have no idea why DevOps was ever configured this way...

    Read more
    • Shubham AgarwalMicrosoft employee Author

      These are the steps outlined for classic editor. We will add that to the blog, thanks for your suggestions.

  • Shaikh, Roshan

    Hi, I am using self hosted windows server 2019 and not Azure hosted VM.
    Will we be impacted here?

    • Shubham AgarwalMicrosoft employee Author

      No, customers using Self hosted Agents are not impacted.

  • Chittineni, Sowmya

    @shubham Agarwal, Pipelines that we changed to use Windows-Latest during the burnout window are failing today. If we switch them back to Windows-2019, they work fine. We are experiencing issues with Windows-Latest, Windows-2025, and Windows-2022.

    • Shubham AgarwalMicrosoft employee Author

      This is unexpected behaviour, please raise an issue with the support team.

  • Gary Walvin

    So it’s no longer possible to create a 2019 windows docker image with a hosted agent? This causes pain for anyone running a 2019 image on a 2019 server as we shouldn’t run a 2022 image on a 2019 server. This would force people to update their servers from 2019 even though 2019 is in support until 2029.
    This makes no sense.

    • Jeff Skaistis

      Yes, it’s disappointing. To continue to support our customers running Windows 2019, a currently supported OS version, we have to now pay for and maintain a self-hosted build agent.

  • Cooper, Jordan

    Hello @Shubham,

    Due to the brownout we have found we have a release pipeline affected by the elimination of Server 2019. We are using hosted agents for this one project. However, there is no other option than “Hosted Windows 2019 with VS2019.” It seems that there should be a 2022 option available but we don’t have one and no way to change it. We are not currently using yaml based deploys for this. How can we get our Agent updated?

    Thanks
    Jordan

    • Boeschen, Curtis

      I think the pool is ‘azure pipelines’.

      • Cooper, Jordan

        Ok, that looks promising. I’ll get the team to give it a try. Thanks!

  • Richard Khan

    Hello @Shubham.

    I have a YML pipeline which sets vmImage to windows-latest. Yet, my pipeline seems to be using windows-2019 but I don’t know why. 2019 is not explicitly specified anywhere.

    When I look at the Agent Queues in the picture you posted above, they are filtering under 2019. I don’t understand why.

    Any ideas? I appreciate your assistance/clarification.

    Cheers,
    Richard.

    • Boeschen, Curtis

      We are seeing this with some of our yml pipelines but they all are placing demands on the agents – try removing the demands.

    • Shubham AgarwalMicrosoft employee Author · Edited

      Hey Richard, this is an unexpected behaviour. Can you reach out to our support team with more detail around the pipeline? We will investigate this further.

      • Richard Khan

        Thank you @Shubham. I’ve submitted a ticket.

  • Venetia

    Hi,

    Updated pool- vmImage: windows-2022 but pipeline was failing because of brownout scheduled today. Shouldn’t this affect only for the pool which is window 2019?

    • Jim Liu

      Seeing the same. Pipelines using windows-latest are failing because of the brownout.

      • Venetia

        Hi Shubham,

        It was our release pipeline that got failed, i updated second stage of release to Window 2022 . But still it was failing

      • Jim Liu · Edited

        Hi Shubham, in our case it was a YAML pipeline. Two stages both use windows-latest, but only the second stage was impacted.

      • Shubham AgarwalMicrosoft employee Author · Edited

        Venetia, Jim this should not be the case, please reach out to us through the support team with the details around these pipeline. Was this issue specific to pipelines created using classic editor?