I’ve started working with Azure DevOps (previously known as Visual Studio Team Services – VSTS, previously known as Visual Studio Online…).
I’m using it to automated Azure deployments in some projects.
In our setup we have several different environments (dev, test, prod, etc.). Depending on the project, the environments are either Azure Resource Groups or completely different Azure subscriptions. In any case, we have created service principal accounts in our Azure Active Directory, that have the necessary Contributor roles to those subscriptions or resource groups, where they should be able to deploy resources.
The service principals have been added to Azure DevOps as Service Connections, so that we have a service connection for each project and environment.
We want to use a Release Pipeline for each project. Each Pipeline has a stage per environment.
Releases are triggered using package management (in these projects we don’t use VSTS for source control and build). Instead, our build server generates NuGet packages and uploads them to Azure DevOps package management, and this triggers the release process.
The Pipeline looks like this: