{"id":58382,"date":"2020-01-21T11:43:46","date_gmt":"2020-01-21T19:43:46","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/devops\/?p=58382"},"modified":"2020-04-08T07:32:02","modified_gmt":"2020-04-08T15:32:02","slug":"removing-older-images-in-azure-pipelines-hosted-pools","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/removing-older-images-in-azure-pipelines-hosted-pools\/","title":{"rendered":"Removing older images in Azure Pipelines hosted pools"},"content":{"rendered":"<p>Over the past year, we have been able to update <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/agents\/hosted?view=azure-devops&amp;tabs=yaml\">Azure Pipelines hosted images<\/a> faster than ever before. We have also rolled out new images &#8211; Windows Server 2019 with Visual Studio 2019, Ubuntu 18.04, and macOS Mojave 10.14. We have seen a phenomenal growth in the use of hosted pools.<\/p>\n<p>To prepare for another set of exciting updates this year and to better serve the needs of our growing user base, we have to make room &#8211; both in terms of Azure capacity and in terms of human support resources &#8211; and remove some of the less used, older images. On <strong>March 23, 2020<\/strong>, we&#8217;ll be removing the following Azure Pipelines hosted images:<\/p>\n<ul>\n<li>Windows Server 2012R2 with Visual Studio 2015, a.k.a <code>vs2015-win2012r2<\/code> or <code>Hosted<\/code><\/li>\n<li>macOS X High Sierra 10.13, a.k.a <code>macOS-10.13<\/code><\/li>\n<li>Windows Server Core 1803, a.k.a <code>win1803<\/code><\/li>\n<\/ul>\n<p>This blog outlines the steps you must take now if you use one of these images.<\/p>\n<h4>Schedule changes<\/h4>\n<p>Based on user feedback and higher usage of the <code>vs2015-win2012r2<\/code> image, we have decided to delay removal of the <code>vs2015-win2012r2<\/code> image until <strong>March 31, 2020<\/strong>. Pipelines using the <code>Hosted<\/code> agent pool will be automatically redirected to use the <code>vs2017-win2016<\/code> image.<\/p>\n<h4>Current Status<\/h4>\n<p>As of <strong>March 31, 2020<\/strong> the following Azure Pipelines hosted images have been removed.<\/p>\n<ul>\n<li>Windows Server 2012R2 with Visual Studio 2015, a.k.a <code>vs2015-win2012r2<\/code> or <code>Hosted<\/code><\/li>\n<li>macOS X High Sierra 10.13, a.k.a <code>macOS-10.13<\/code><\/li>\n<li>Windows Server Core 1803, a.k.a <code>win1803<\/code><\/li>\n<\/ul>\n<p>In addition to removing these hosted images, the <code>Hosted<\/code> agent pool has been redirected to use the <code>vs2017-win2016<\/code> image.<\/p>\n<h4>Windows Server 2012R2 with Visual Studio 2015 (<code>vs2015-win2012r2<\/code> or <code>Hosted<\/code>)<\/h4>\n<p>We have decided to remove the <code>vs2015-win2012r2<\/code> image because it has not been updated in several years, lacks various security patches and hotfixes, and less than 5% of our users use it. This includes the agent pool labeled <code>Hosted<\/code>. While we have decided to remove the <code>vs2015-win2012r2<\/code> image, there are two newer versions of Visual Studio images available in Azure Pipelines &#8211; <code>vs2017-win2016<\/code> and <code>windows-2019<\/code>.<\/p>\n<p>We understand that some of you still build your older apps using this image. Here are your options to move forward:<\/p>\n<ul>\n<li>Identify pipelines using the <code>vs2015-win2012r2<\/code> image, by navigating to <code>https:\/\/dev.azure.com\/{yourorganization}\/{yourproject}\/_settings\/agentqueues<\/code>. From there, you will need to check both the Azure Pipelines and Hosted agent pool for pipelines impacted by this change. Please note, in the Azure Pipelines pool, you will need to use the agent specification dropdown to filter for <code>vs2015-win2012r2<\/code>. In addition, you can use the <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-agent\/tree\/master\/tools\/FindPipelinesUsingRetiredImages\" rel=\"noopener noreferrer\" target=\"_blank\">query job history for retired images script<\/a>.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/vs2015-1024x423.png\" alt=\"\" width=\"640\" height=\"264\" class=\"aligncenter size-large wp-image-58396\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png\" alt=\"\" width=\"300\" height=\"69\" class=\"aligncenter size-medium wp-image-58385\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name.png 346w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The pipeline name is underneath the job (e.g. PartsUnlimited (2) is the pipeline)<\/p>\n<ul>\n<li>Use one of the newer versions of Visual Studio, if that is an option for you. In many cases, your apps can be migrated to build on a newer version of Visual Studio with <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/porting\/port-migrate-and-upgrade-visual-studio-projects?view=vs-2017\">minimal effort<\/a>. The <code>vs2017-win2016<\/code> and <code>windows-2019<\/code> images are kept up to date. If you use <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/get-started\/pipelines-get-started?view=azure-devops&amp;tabs=classic\">classic pipelines<\/a>, edit your pipeline and change the image to one of these. If you use <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/get-started\/pipelines-get-started?view=azure-devops&amp;tabs=yaml\">YAML pipelines<\/a>, update your pipeline by editing its YAML file.<\/li>\n<\/ul>\n<pre><code class=\"yaml\">    jobs:\n    - job: Windows\n      pool:\n        vmImage: 'vs2017-win2016'\n      steps:\n      - script: echo hello from Windows\n<\/code><\/pre>\n<ul>\n<li>Run your builds on a self-hosted agent pool. You can use Azure to <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-machines\/windows\/quick-create-portal\">create new virtual machines<\/a> in the cloud, and to install Visual Studio 2015. Once created, configure a <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/agents\/v2-windows?view=azure-devops\">self-hosted agent pool<\/a> in your Azure Pipelines organization, and configure each of your pipelines to use the self-hosted agent pool.<\/li>\n<\/ul>\n<h4>macOS High Sierra 10.13 (<code>macOS-10.13<\/code>)<\/h4>\n<p>We have decided to remove the <code>macOS-10.13<\/code> image because less than 5% of users use macOS High Sierra 10.13 and there is a later macOS version image &#8211; <code>macOS-10.14<\/code> available. In addition, we will be adding the latest macOS version &#8211; Catalina or <code>macOS-10.15<\/code> on <strong>February 3, 2020<\/strong>.<\/p>\n<p>This means that versions of Xcode older than 9.4.1, will no longer be supported. If your builds run on an older version of Xcode, please take some time to update to Xcode 10 or later to continue taking advantage of the Hosted macOS images. You can also set up a self-hosted macOS agent pool with your desired tools and configure your pipelines to use that pool.<\/p>\n<p>To identify pipelines using the <code>macOS-10.13<\/code> image, navigate to <code>https:\/\/dev.azure.com\/{yourorganization}\/{yourproject}\/_settings\/agentqueues<\/code>. From there, you will need to check both the Azure Pipelines and Hosted macOS High Sierra agent pool for pipelines impacted by this change. Please note, in the Azure Pipelines pool, you will need to use the agent specification dropdown to filter for <code>macOS-10.13<\/code>. In addition, you can use the <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-agent\/tree\/master\/tools\/FindPipelinesUsingRetiredImages\" rel=\"noopener noreferrer\" target=\"_blank\">query job history for retired images script<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-1024x392.png\" alt=\"\" width=\"640\" height=\"245\" class=\"aligncenter size-large wp-image-58386\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-1024x392.png 1024w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-300x115.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-768x294.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-1536x588.png 1536w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-mac-2048x784.png 2048w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png\" alt=\"\" width=\"300\" height=\"69\" class=\"aligncenter size-medium wp-image-58385\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name.png 346w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The pipeline name is underneath the job (e.g. PartsUnlimited (2) is the pipeline)<\/p>\n<p>If you have specific questions regarding our Hosted macOS pools, please reach out to Nilofer on Twitter at <a href=\"https:\/\/twitter.com\/nilli_minaj\">@nilli_minaj<\/a><\/p>\n<h4>Windows Container (<code>win1803<\/code>).<\/h4>\n<p>The usage of this image is the lowest among our pools &#8211; less than 1%. Any builds that target this pool will start failing on March 23, 2020.<\/p>\n<p>To identify pipelines using the <code>win1803<\/code> image, navigate to <code>https:\/\/dev.azure.com\/{yourorganization}\/{yourproject}\/_settings\/agentqueues<\/code>. From there, you will need to check both the Azure Pipelines and Hosted Windows Container agent pool for pipelines impacted by this change. Please note, in the Azure Pipelines pool, you will need to use the agent specification dropdown to filter for <code>win1803<\/code>. In addition, you can use the <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-agent\/tree\/master\/tools\/FindPipelinesUsingRetiredImages\" rel=\"noopener noreferrer\" target=\"_blank\">query job history for retired images script<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-1024x396.png\" alt=\"\" width=\"640\" height=\"248\" class=\"aligncenter size-large wp-image-58387\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-1024x396.png 1024w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-300x116.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-768x297.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-1536x594.png 1536w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-pools-wincon-2048x791.png 2048w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png\" alt=\"\" width=\"300\" height=\"69\" class=\"aligncenter size-medium wp-image-58385\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name-300x69.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2020\/01\/azure-pipelines-name.png 346w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The pipeline name is underneath the job (e.g. PartsUnlimited (2) is the pipeline)<\/p>\n<p>To mitigate this:<\/p>\n<ul>\n<li>Run your builds on a self-hosted agent pool. You can use Azure to <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-machines\/windows\/cli-ps-findimage\">create new Windows server core virtual machines<\/a> in the cloud. Once created, configure a <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/agents\/v2-windows?view=azure-devops\">self-hosted agent pool<\/a> in your Azure Pipelines organization, and configure each of your pipelines to use the self-hosted agent pool.<\/li>\n<\/ul>\n<h4>Brownout schedule<\/h4>\n<p>During the next couple of weeks, we will conduct a series of brownouts to highlight builds and releases using these soon-to-be-removed images. We will conduct our first brownout on March 9th from 1800-1900 UTC. After that we will continue to fail builds that use these images for up to 3 hours every day at different times. You will see the following error message in your build or release, if you are affected by a brownout:<\/p>\n<p>This job was temporarily blocked because it uses a Microsoft hosted agent () that will be permanently removed on March 23, 2020. See <a href=\"https:\/\/aka.ms\/blocked-hosted-agent\">https:\/\/aka.ms\/blocked-hosted-agent<\/a> for more information.<\/p>\n<p>During these periods, any builds and releases that use vs2015-win2012r2, macOS-10.13, or win1803 images will fail. After each brownout period, we will revert the change. If your builds and releases fail during these brownout periods and if you see the error message shown above, please update your image to one of the supported images highlighted in this blog post.<\/p>\n<h4>Feedback<\/h4>\n<p>We&#8217;d really like to hear from you regarding what capabilities you&#8217;d like to see us add to the Hosted Agents experience in Azure Pipelines. Please contact us by reaching out <a href=\"https:\/\/twitter.com\/AzureDevOps\">@AzureDevOps<\/a> or by creating an issue on <a target=\"_blank\" href=\"https:\/\/github.com\/Microsoft\/azure-pipelines-image-generation\" rel=\"noopener noreferrer\">our GitHub repository<\/a>.<\/p>\n<p>Thank you for using Azure Pipelines!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the past year, we have been able to update Azure Pipelines hosted images faster than ever before. We have also rolled out new images &#8211; Windows Server 2019 with Visual Studio 2019, Ubuntu 18.04, and macOS Mojave 10.14. We have seen a phenomenal growth in the use of hosted pools. To prepare for another [&hellip;]<\/p>\n","protected":false},"author":238,"featured_media":45953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[226,1],"tags":[],"class_list":["post-58382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci","category-devops"],"acf":[],"blog_post_summary":"<p>Over the past year, we have been able to update Azure Pipelines hosted images faster than ever before. We have also rolled out new images &#8211; Windows Server 2019 with Visual Studio 2019, Ubuntu 18.04, and macOS Mojave 10.14. We have seen a phenomenal growth in the use of hosted pools. To prepare for another [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/58382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=58382"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/58382\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/45953"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=58382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=58382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=58382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}