Creating a Release
Start course
1h 2m

This course deals with how to implement continuous delivery with the Azure DevOps solution. In particular, we will be exploring how to design different release strategies and some factors you need to consider while setting up release pipelines. This will include looking at release triggers, release gates, and other areas associated with releasing code, including working with different environments. We will also take a look at deployment patterns and how they can be implemented in your release strategy and release pipelines. During this course, we will be using hands-on examples to help work through these concepts and configurations.

If you have any feedback for us about this course, please contact Cloud Academy at

Learning Objectives

  • Design a release strategy
  • Set up a release management workflow using Azure DevOps
  • Implement an appropriate deployment pattern

Intended Audience

  • DevOps engineers 
  • People preparing for Microsoft’s AZ-400 exam


  • General knowledge of Azure
  • Experience with Git version control, including pushing changes into repositories
  • You do not need to know any specific development language

Next, we're going to explore the specifics of creating a release pipeline. Variables allow a pipeline to be dynamic, meaning we can feed data from one task into the next task. It means we can reuse tasks, stages, and pipelines for multiple deployments. We can scope variables to different parts of the release, for instance, we can set up a set of variables and scope it to the development stage and then create another set of variables with the same name for a production stage.

You can use variable groups to store values that you want to take control of, and make them available across multiple pipelines. Azure DevOps also has a number of predefined variables as shown here. Here's a brief look at a few items accessible from the agent variable. The Microsoft documentation will help you explore what these predefined variables are and what you can use them for. It is highly likely that in your pipeline you'll need to pass through secure data. This could be an SSH key, passwords, API secrets, ClientID or even configuration settings. Variables have a built-in option to store secrets securely. It is important to use this flag as shown here in the screenshot as it means the secrets will be hidden while being used, for example, in the output of log files.

Another option is to store your secret in Azure Key Vault. If you create a Key Vault in Azure and populate a secret, then you'll need to authorize Azure DevOps to retrieve the secrets from the Key Vault itself. Once authorized, you'll be able to add secrets directly from Key Vault to Azure DevOps variable groups as we can see here on the screenshot. And now we can see the secret in Azure DevOps.

A pipeline contains tasks which can be executed repeatability often with parameters and variables used to drive dynamic execution. There are many standard tasks that come out of the box and there's a growing list of tasks available on the marketplace. There are also generic shell tasks which will let you execute your own custom script like PowerShell or SSH tasks. You can browse marketplace tasks from within the Azure DevOps console. If you select Add, you'll be walked through the process of installing that task into your DevOps environment.

Task groups allow you to group a series of tasks, already defined, into a single reusable task. This task group can be added to the pipeline, just like any other task. You can define configuration variables, allowing the task to be reusable. A major advantage of task groups is that it allows groups of tasks to be centrally managed, reducing the complexity involved of managing this sequence at scale.

About the Author

Matthew Quickenden is a motivated Infrastructure Consultant with over 20 years of industry experience supporting Microsoft systems and other Microsoft products and solutions. He works as a technical delivery lead managing resources, understanding and translating customer requirements and expectations into architecture, and building technical solutions. In recent years, Matthew has been focused on helping businesses consume and utilize cloud technologies with a focus on leveraging automation to rapidly deploy and manage cloud resources at scale.