Hosted Pipelines Image Deprecation

Eric

Introduction

Microsoft-hosted Pipelines provides images for the 2 latest versions of macOS, Windows & Ubuntu. In this blog post we want to update you on recent and upcoming changes for each of those operating systems. If you have pipelines that use ubuntu-16.04, macOS-10.14, macOS-latest, vs2017-win2016, or windows-latest, you will be impacted and this post contains important information for you to read.

macOS

macOS 11 Big Sur is the current version of macOS. To make room for the upcoming demand for macOS, we are deprecating macOS-10.14 images. In YAML Pipelines, you can update the pipeline by editing the YAML:

jobs:
- job: macOS1015
  pool:
    vmImage: 'macOS-1015'
  steps:
  - bash: |
      echo hello from macOS Catalina
      sw_vers
- job: macOS11
  pool:
    vmImage: 'macOS-11'
  steps:
  - bash: |
      echo hello from macOS Big Sur
      sw_vers
- job: macOSlatest
  pool:
    vmImage: 'macOS-latest'
  steps:
  - bash: |
      echo hello from the latest version of macOS available
      sw_vers

Note: Image macOS-latest will reference image macoS-11 soon.

Ubuntu

When using ubuntu-latest Azure pipelines now uses Ubuntu 20.04. We are also supporting Ubuntu 18.04 with the ubuntu-18.04 image. In YAML Pipelines, you can update the pipeline by editing the YAML:

jobs:
- job: ubuntu1804
  pool:
    vmImage: 'ubuntu-18.04'
  steps:
  - bash: |
      echo Hello from Ubuntu 18.04
      lsb_release -d
- job: ubuntu2004
  pool:
    vmImage: 'ubuntu-20.04'
  steps:
  - bash: |
      echo Hello from Ubuntu 20.04
      lsb_release -d
- job: ubuntulatest
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - bash: |
      echo Hello from the latest version of Ubuntu available
      lsb_release -d

Important: We are removing ubuntu-16.04 soon, as planned.

Windows

Recently, we made Windows 2022 available as a pipeline image. Specify windows-2022 to use this image. The sample YAML below shows the evailable Windows images:

- job: 'windows2019'
  displayName: 'windows-2019 image'
  pool:
    vmImage: 'windows-2019'
  steps:
  - pwsh: |
      Write-Host "hello from Windows 2019 with Visual Studio 2019"
      Get-ComputerInfo | Select-Object WindowsProductName

- job: 'windows2022'
  displayName: 'windows-2022 image'
  pool:
    vmImage: 'windows-2022'
  steps:
  - pwsh: |
      Write-Host "hello from Windows 2022 with Visual Studio 2022"
      Get-ComputerInfo | Select-Object WindowsProductName

- job: 'windowslatest'
  displayName: 'windows-latest image'
  pool:
    vmImage: 'windows-latest'
  steps:
  - pwsh: |
      Write-Host "hello from the latest version of Windows available"
      Get-ComputerInfo | Select-Object WindowsProductName

Important: With the upcoming end of mainstream support on Windows 2016 in January 2022, we are deprecating vs2017-win2016 images starting November 15. Retirement is planned for March 2022.

We understand this may impact your pipelines. If you are using vs2017-win2016 these are options to move forward:
– Start using the windows-2019 image. This image contains most of the tools (e.g. .NET Framework versions) currently available on vs2017-win2016.
– In many cases, your apps can be migrated to build on a newer version of Visual Studio with minimal effort.

Finding impacted pipelines

To identify pipelines that are using a deprecated (e.g. vs2017-win2016) image, you can check the following location:
https://dev.azure.com/{organization}/{project}/_settings/agentqueues

Then, filter on the image name:
Image pool filter

You can also query job history for deprecated images across projects using the script located here:

./QueryJobHistoryForRetiredImages.ps1 -accountUrl https://dev.azure.com/{org} -pat {pat}

Resources

Image configurations
Software and images support policy
Sprint 177 Release Notes
Sprint 187 Release Notes
Sprint 192 Release Notes
Sprint 193 Release Notes

2 comments

Leave a comment

  • Daniel Schroeder

    Just to clarify, in the introduction you say that “windows-latest” will be impacted, but down in the Windows section, you show using “windows-latest” still as a valid option. Am I correct to assume that you mean pipelines using “windows-latest” will be impacted simply because behind the scenes it’s going to start using a “windows-2022” image instead of a “windows-2019” image?

    Also, you have a typo of “evailable” instead of “available”.