{"id":56442,"date":"2019-05-07T08:00:29","date_gmt":"2019-05-07T16:00:29","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/devops\/?p=56442"},"modified":"2019-05-14T06:25:39","modified_gmt":"2019-05-14T14:25:39","slug":"whats-new-with-azure-pipelines","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/whats-new-with-azure-pipelines\/","title":{"rendered":"What\u2019s new with Azure Pipelines"},"content":{"rendered":"<p><a href=\"https:\/\/azure.com\/pipelines\">Azure Pipelines<\/a>, part of the Azure DevOps suite, is our Continuous Integration and Continuous Delivery (CI and CD) platform, used every day by large enterprises, individual developers, and open source projects. Today, we\u2019re thrilled to announce new features for Azure Pipelines, including some much-requested ones:<\/p>\n<ul>\n<li>Multi-stage YAML pipelines (for CI and CD) <\/li>\n<li>Environments and deployment strategies <\/li>\n<li>Kubernetes support<\/li>\n<\/ul>\n<h2>Multi-stage YAML pipelines<\/h2>\n<p>One of our biggest customer requests since launching YAML support for Build pipelines (CI) has been to support it for Release pipelines (CD) as well. To accomplish this, we now offer a unified YAML experience, so you can configure each of your pipelines to do CI, CD, or CI and CD together. Defining your pipelines using YAML documents allows you to check the configuration of your CI\/CD into source control together with your application\u2019s code, for easy management, versioning, and control.<\/p>\n<p><img decoding=\"async\" width=\"1430\" height=\"894\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image.png\" alt=\"Multi-stage pipelines view\" class=\"wp-image-56444\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image.png 1430w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-300x188.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-768x480.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1024x640.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<p>With our new YAML support, we\u2019re also bringing a new UI to help visualize all of your multi-stage pipelines across the product, whether you\u2019re in the run summary view, looking at all your pipeline runs, or browsing logs.<\/p>\n<p><img decoding=\"async\" width=\"1430\" height=\"894\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1.png\" alt=\"View all runs\" class=\"wp-image-56445\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1.png 1430w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1-300x188.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1-768x480.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-1-1024x640.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<p>In addition to our new pipelines pages, we have a new log viewing experience as well. This lets you easily jump between stages and jobs along with helping you quickly identify errors and warnings.<\/p>\n<p><img decoding=\"async\" width=\"1430\" height=\"894\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-2.png\" alt=\"New logs view\" class=\"wp-image-56446\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-2.png 1430w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-2-300x188.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-2-768x480.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-2-1024x640.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<p>This feature will be rolled out for all accounts over the next few days. To enable it, go to the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/project\/navigation\/preview-features?view=azure-devops\">preview features page<\/a> and turn on the toggle for \u201cMulti-stage pipelines&#8221;.<\/p>\n<h2>Getting going with YAML<\/h2>\n<p>We want you to be able to get going fast wherever your code lives. Once you connect your repo, whether it\u2019s on GitHub, Azure Repos, or your own external Git source, we\u2019ll analyze your code and recommend a YAML template that makes sense for you and gets you up and running quickly.<\/p>\n<p><img decoding=\"async\" width=\"1430\" height=\"894\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-3.png\" alt=\"Configure pipeline from template\" class=\"wp-image-56447\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-3.png 1430w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-3-300x188.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-3-768x480.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-3-1024x640.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<p>While we want to get you running quickly, we know you\u2019re going to want to keep configuring and updating your YAML. To help make it even easier to edit and update your pipeline, we\u2019ve created an in-product editor with IntelliSense smart code completion, and an easy task assistant.<\/p>\n<p><img decoding=\"async\" width=\"1430\" height=\"894\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-4.png\" alt=\"YAML editor with IntelliSense\" class=\"wp-image-56448\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-4.png 1430w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-4-300x188.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-4-768x480.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-4-1024x640.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<h2>Building your first multi-stage pipeline with environments<\/h2>\n<p>Bringing CD to YAML means a bunch of great additions in terms of commands and functionality. Let\u2019s cover the basics with a simple pipeline that just builds and deploys an app in two stages.<\/p>\n<pre><code class=\"yaml\">stages:\n- stage: Build\n  jobs:\n  - job: Build\n    pool:\n      vmImage: 'Ubuntu-16.04'\n    continueOnError: true\n    steps:\n    - script: echo my first build job\n- stage: Deploy\n  jobs:\n    # track deployments on the environment\n  - deployment: DeployWeb\n    pool:\n      vmImage: 'Ubuntu-16.04'\n    # creates an environment if it doesn\u2019t exist\n    environment: 'smarthotel-dev'\n    strategy:\n      # default deployment strategy\n      runOnce:\n        deploy:\n          steps:\n          - script: echo my first deployment\n<\/code><\/pre>\n<p>If we ran this pipeline, it would execute a first stage, <em>Build<\/em>, followed by a second stage, <em>Deploy<\/em>. You are free to create as many stages as you wish, for example to deploy to staging and pre-production environments.<\/p>\n<p>You may notice two new interesting concepts in here if you\u2019re familiar with our YAML schema. And if this is the first time you\u2019re seeing our YAML, you can <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/yaml-schema?view=azure-devops&amp;tabs=schema\">read up on the core concepts here<\/a>.<\/p>\n<p>The first new keyword is <strong>environment<\/strong>. Environments represent the group of resources targeted by a pipeline, for example, Kubernetes clusters, Azure Web Apps, virtual machines, and databases. Environments are useful to group resources, for example under \u201cdevelopment\u201d, \u201cstaging\u201d, \u201cproduction\u201d, etc, and you can define them freely. Defining and using an environment unlocks all kinds of capabilities, for example:<\/p>\n<ul>\n<li>Traceability of commits and work items <\/li>\n<li>Deployment history down to the individual resource <\/li>\n<li>Deeper diagnostics, and (soon) approvals and checks <\/li>\n<\/ul>\n<p>There\u2019s a lot of great new functionality available today in preview, and even more coming around the corner. You can learn more on environments here<\/p>\n<p><img decoding=\"async\" width=\"2174\" height=\"1188\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-5.png\" alt=\"Kubernetes environments\" class=\"wp-image-56449\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-5.png 2174w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-5-300x164.png 300w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-5-768x420.png 768w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/word-image-5-1024x560.png 1024w\" sizes=\"(max-width: 2174px) 100vw, 2174px\" \/><\/p>\n<p>You will also notice the <strong>strategy<\/strong> keyword. This impacts the deployment strategy, which defines how your application is rolled out across the cluster. The default strategy is <code>runOnce<\/code>, but in the future you\u2019ll be able to easily indicate other strategies, such as canary or blue-green.<\/p>\n<p>If you\u2019re ready to start building, check out our <a href=\"https:\/\/go.microsoft.com\/fwlink\/?linkid=2091040\">documentation<\/a> for building a multi-stage pipeline with environments. If you want to see some multi-stage pipeline templates to work off of, take a look at out our <a href=\"https:\/\/github.com\/microsoftdocs\/pipelines-multistage\">templates repo<\/a>. You can even see those sample pipelines in action inside of our <a href=\"https:\/\/dev.azure.com\/azure-devops-yaml\/multi-stage-samples\/_build\">samples project<\/a>.<\/p>\n<h2>Kubernetes<\/h2>\n<p>If you have an app which has been containerized (ie. there is a Dockerfile in the repository), we want to make it easy for you to setup a pipeline in less than 2 minutes, to build and deploy to a Kubernetes cluster (including Azure Kubernetes Service). Wrapping your head around Kubernetes can be hard, so we&#8217;re making it easy to both get started and continue deploying to your Kubernetes clusters. For more details, read our <a href=\"https:\/\/aka.ms\/build19\/azuredevops\/k8s\">post on Azure Pipelines and Kubernetes<\/a>.<\/p>\n<p>Kubernetes is fully integrated with Azure Pipelines environments too. This lets you view all the deployments, daemonsets, etc, running on Kubernetes in each environment, completed by insights such as readiness and liveness probes of pods. You can use this information and pod-level details (including logs, containers running inside pods, and image metadata) to effectively diagnose and debug any issue, without requiring direct access to the cluster itself.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2019\/05\/k8.png\" class=\"wp-image-56450\" alt=\"Kubernetes environments\" \/><\/p>\n<h2>A look at what\u2019s next<\/h2>\n<p>In addition to the preview features that now available, there are so many exciting things just around the corner for Azure Pipelines we want to share:<\/p>\n<ul>\n<li><strong>Caching<\/strong> \u2013 We\u2019ll be announcing the availability of another much-requested feature very shortly: caching to help your builds run even faster. <\/li>\n<li><strong>Checks and approvals<\/strong> \u2013 We\u2019re improving multi-stage pipelines with the ability to set approvals on your environments, to help control what gets deployed when and where. We\u2019ll keep iterating here to deliver more experiences with checks to help gating your multi-stage pipelines. <\/li>\n<li><strong>Deployment strategies<\/strong> \u2013 We\u2019re adding additional deployment strategies as part of the deployment job type, like blue-green, canary and rolling, to better control how your applications are deployed across distributed systems. <\/li>\n<li><strong>Environments<\/strong> \u2013 We\u2019re adding support for additional resource types in environments, so you can get going quickly with virtual machines (through deployment groups) and Azure Web Apps. <\/li>\n<li><strong>Mobile<\/strong> \u2013 With our new UX, we\u2019re going to start to enable new mobile views in Q2 to help you view the status of pipelines, quickly jump into logs, and complete approvals. <\/li>\n<li><strong>Pipeline analytics<\/strong> \u2013 We&#8217;re continuing to grow our pipeline analytics experiences to help you get an all-up picture of the health of your pipelines, so you can know where to go in and dig deeper. <\/li>\n<li><strong>Tests and code coverage<\/strong> \u2013 We\u2019re going to be shipping all new test and code coverage features and UX in the next months. <\/li>\n<\/ul>\n<h2>Thank you<\/h2>\n<p>Lastly, we want to thank all of our users who have adopted Azure Pipelines. Since our launch last September, we have seen tremendous growth, and we are particularly excited about the response from the open source developer community. It\u2019s been an honor to see Azure Pipelines badges on so many open sources projects we love and use regularly ourselves. In the first eight months, public repositories have already used <strong>over 88 years of build time for Azure Pipelines for free<\/strong>. Check out <a href=\"https:\/\/aka.ms\/build19\/azuredevops\/oss\">Martin\u2019s post<\/a> for some more stats and stories from open source projects. We\u2019ve also received so much great feedback from project maintainers to date and we can\u2019t thank the community enough.<\/p>\n<p>If you\u2019re new to Azure Pipelines, <a href=\"https:\/\/azure.com\/pipelines\">get started for free on our website<\/a> and learn more about what you can do with Azure Pipelines.<\/p>\n<p>We\u2019ll be posting more deep-dive information in the coming weeks, but as always we\u2019d love to hear your feedback and comments. Feel free to comment on this post or tweet at <a href=\"https:\/\/twitter.com\/AzureDevOps\">@AzureDevOps<\/a> with your thoughts.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we are announcing new features for Azure Pipelines, including multi-stage YAML pipelines (for CI and CD), environments and deployment strategies, and Kubernetes support.<\/p>\n","protected":false},"author":172,"featured_media":56444,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[224,226,249],"tags":[],"class_list":["post-56442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-ci","category-open-source"],"acf":[],"blog_post_summary":"<p>Today, we are announcing new features for Azure Pipelines, including multi-stage YAML pipelines (for CI and CD), environments and deployment strategies, and Kubernetes support.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/56442","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\/172"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=56442"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/56442\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/56444"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=56442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=56442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=56442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}