If you’ve not been in Microsoft’s eco-system in the recent few years, it’s hard for many to digest the volume of changes made to Microsoft’s offerings. Considerable efforts have been made to make the cloud toolset more developer-friendly. With acquisitions such as GitHub and several open-source initiatives, Microsoft is trying to change how they are viewed by developers.
One of the key toolings in the mix is Azure DevOps. While there are other cloud-agnostic solutions in play, Azure DevOps has been the front runner for anything Azure in recent years, mainly due to the tight native and 3rd party integrations as well as the extended set of features such as the Boards, Artifacts, Test Plans and Repositories which enables end-to-end software development.
Operations by pull-request have been in discussion for a while now. Words such as GitOps came to mind mainly related to Infrastructure running Kubernetes where the infrastructure orchestration and the CI/CD were based and controlled around a git repository or set of repositories. Azure DevOps made GitOps a reality for any deployment with the enhancements they made to their YAML based pipeline experience.
Being a developer at heart, with a DevOps background, these changes made me jump straight onto the bandwagon of expressing everything as code. Azure DevOps initially had the CI (Continuous Integration) and CD (Continuous Deployment) addressed as two separate sections which were called Build and Deploy in the previous sprints/versions of Azure DevOps. With the introduction of the pipelines initiative, everything became a set of pipelines. While the feature set required to enable end-to-end CD did take a lot longer than expected, it’s now at a stage which allows the creation of production-ready “Everything as Code” projects.
My recent meetup presentation covered an end-to-end solution which was completely version-controlled including the application source code, infrastructure, as well as the actual deployment pipelines themselves, which Microsoft refers to as configuration as code in certain documentation. Post the meetup the Azure DevOps team added the final missing features as a part of Sprint 158 to enable Approvals and Retries for Multi-Stage,the concept which enables end-to-end pipelines, making pipelines ready for production use.
The next two iterations added the finetuning around these features making the feature more robust with improvements such as Approval policies for YAML pipelines.