As previously announced, Azure Pipelines is the Continuous Integration and Continuous Delivery (CI/CD) solution for any language, application, or platform. Azure Pipelines has evolved in last couple of years as we are seeing customers use this service for both enhanced CI/CD functionality, and as a dedicated CI/CD service to use in their DevOps toolchains.
Any language, any platform, any cloud
Azure Pipelines’ key value proposition is to build, test any language, and deploy to any platform or any cloud.
Using Azure Pipelines you can build and test any language including Go, Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android, and iOS apps. Azure Pipelines supports hosted agents for Windows, Mac, and Linux apps without you worrying about the infrastructure for building and testing applications. You can configure CI whether your application code is stored in Azure Repos, GitHub, GitLab, or Bitbucket.
Once the application is built, you can use Azure Pipelines to target any platform including Linux/Windows VMs, Kubernetes, Azure PaaS Services. You can also target any cloud, such as AWS or GCP.
Azure Pipelines can be used to easily setup a reliable continuous delivery service for deploying your containerized apps to any Kubernetes cluster, running in any cloud.
The built-in Docker support helps you use Azure Pipelines to build and push your Docker images to Azure Container Registry without needing to set up an infrastructure of your own. However, the support is not limited to just Azure. Azure Pipelines can also be used with any container registry like Docker Hub. You can build either Windows or Linux container images.
Once the container image is available in the registry, Azure Pipelines supports deploying apps to an Azure Kubernetes service cluster by using Helm or Kubernetes spec files. These files can be stored as code, using Git as the source of truth for versioning environment configurations as well as applications.
Kubernetes deployment configuration
Azure Pipelines provides multiple ways of deploying to a VM using Deployment Groups or using traditional on-premises VM managers like SCVMM or VMWare.
A deployment group is a logical set of deployment target machines that have agents installed on each one. Deployment groups represent the physical environments - for example, "Dev", "Test", "UAT", and "Production". In Azure Pipelines, you can configure a job with a set of steps or scripts to target one or more deployment groups to perform an application update, database update, or even a configuration change.
Deployment group supports deployment strategies like rolling update behind load balancer. Deployment group can be used to target Windows VM or Linux VM running in any cloud, or a VM running inside an enterprise boundary. You can see in the below image how we are updating VM images 20 percent at a time using the Rolling update strategy.
VMs rolling update
For traditional on-premises deployment, you can deploy directly to the VMs or you can use any VM manager solution like SCVMM or VMWare to provision, deploy, or manage the environments. The SCVMM extension for Azure Pipelines helps you provision, manage, and deploy to your on-premises infrastructure. You can dynamically provision new virtual machines in System Center Virtual Machine Manager (SCVMM) and deploy to those virtual machines using Azure Pipelines.
Multi-cloud is becoming critical. Azure Pipelines can deploy to Azure, AWS, and GCP, and via our extensible tasks, to other clouds as well. Most of Azure deployment tasks are built-in and available default in the product, you can use them to deploy to Azure Web Application, Azure Web App for Containers or Azure SQL Database. Azure Pipelines has an AWS extension available to deploy to any AWS service – AWS Elastic Beanstalk, AWS EC2 with CodeDeploy and AWS CloudFormation stacks.
In Azure Pipelines you can use stages, gates, and approvals to control the blast radius of the deployment with standard patterns for progressive exposure.
- Azure Pipelines help you model simple to complex multi-stage orchestration workflows based on your application and customer delivery requirements. You can deploy to Dev/QA environments on a continuous basis to make sure you are hitting the right quality before taking them to the production/customer environment.
- Approvals and Release gates give you additional control over the start and completion of the deployment pipeline to model all quality gates needed for your automated deployments.
- Using Azure Pipelines, you get full traceability from deployment, build, commit, and work item so you know what features/bugs are getting deployed at each stage. You can use this to easily create release notes for your product.
- Azure Pipelines can even deploy from other CI systems, like Jenkins. Azure Pipelines also integrates well with other version control and issue tracking systems to get the same end to end functionalities including traceability, branch conditions, and triggers.
Free for Open Source Projects
Finally Azure Pipelines provides a great offer for Open Source Projects by providing unlimited build minutes and 10 free parallel jobs, and integrates well with Github repos. Using the Azure Pipeline app on Github Marketplace, you can easily create and setup a CI/CD pipeline for any Github repo.
To learn more about Azure Pipelines, see our documentation for tutorials, concepts, and other learning materials.