Azure DevOps, YAML release pipelines?
Azure DevopsAzure PipelinesAzure Pipelines-Release-PipelineAzure Devops Problem Overview
I am following this process to create a YAML build pipeline for a .NET Core Web API project:
https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=vsts
When it comes to releasing it, I note that the (recently renamed) Azure DevOps doesn't seem to support YAML for defining release pipelines. However, I can see that deployment tasks have been defined eg:
Are we expecting an upgrade to the release pipelines functionality to support YAML and, if so, when?
Azure Devops Solutions
Solution 1 - Azure Devops
At the time of writing this response the features timeline reflects yaml releases are coming 2018 Q3.
https://docs.microsoft.com/en-us/azure/devops/release-notes/
Update: This has been bumped a few times. Checking the comments below is recommended as folks have been providing updates as they find them.
Update
As per comments, this is now possible: https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/. The following is copied and pasted from the article and demonstrates using various stages:
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'Ubuntu-16.04'
continueOnError: true
steps:
- script: echo my first build job
- stage: Deploy
jobs:
# track deployments on the environment
- deployment: DeployWeb
pool:
vmImage: 'Ubuntu-16.04'
# creates an environment if it doesn’t exist
environment: 'smarthotel-dev'
strategy:
# default deployment strategy
runOnce:
deploy:
steps:
- script: echo my first deployment
Solution 2 - Azure Devops
YAML build pipeline creation experience is in preview. (today is 2018-12-04)
YAML for release pipelines seems to be a ways off still: 2019 Q2
Preview features can be enabled from your profile like this:
EDIT: As nullforce points out in comments, this only enables a YAML experience for build pipelines and not release pipelines.
UPDATE (2019-05-16): Following Microsoft's "Build 2019", the full YAML experience for both build and deployment should now be possible in the same YAML pipelines file.
Solution 3 - Azure Devops
The Product Team is working on it. You can track the update through Release notes.
Solution 4 - Azure Devops
I am in the middle of doing something like this right this very moment, but I am using the current REST APIs. What I am doing something similar to what I documented here (https://stackoverflow.com/questions/50245719/how-do-you-import-a-release-definition-in-vsts/52505953#52505953). Basically I am saving a templated JSON Release Pipeline file into the source code repository with variable placeholders, and a version number embedded. A then have a PowerShell script that is calling the Azure DevOps (that's a long word, I preferred typing VSTS, maybe I'll start typing AD)
- REST APIs to check of the Release Pipeline exists - works
- Create if it doesn't exist - works
- Compare embedded versions and update and if necessary (I'm stuck here, but I'll solve it, returning error that pipeline being updated hasn't changed even though I've changed it.)
I want this to executing during the Build pipeline so that I no longer have to modify lots of similar Release pipelines manually. I would prefer this to be a YAML file as well, but this is what I have today. I hope this helps.
Solution 5 - Azure Devops
Pipelines are made of one or more jobs and may include resources and variables. Jobs are made of one or more steps plus some job-specific data. Steps can be tasks, scripts, or references to external templates. This is reflected in the structure of the YAML file. Please visit here for details