After a significant amount of time envisioning a DevOps pipeline, hearing about them, reading about them on Twitter, and watching other’s create them I finally made some time to get some hands on experience. I chose to work my Azure DSC configuration deployment into a pipeline, which I’ll blog about sometime in the near future.
First, I ran into an almost immediate question: what is the difference between a Pipeline, and a Release?
From previous reading, I had learned that Continuous Integration (CI) was related to Build pipelines, which the first item in the menu was previously called. Then subsequently Continuous Deployment (CD) was a Release pipeline and separated to its own menu item.
However when I started playing around this week, what I found was a very confusing similarity between the two.
I could make a Pipeline with YAML or a classic editor, both including tasks and steps for build and releases, and when I went to save it would store a YAML file in my connected repository. This covers CI/CD in full and left me wondering where Releases fit.
I could also create a Release pipeline, in a graphical format only, with an Artifacts and a Stages section that seemingly had no connection to a repository other than creating a runtime artifact from one.
Reading the excellent Azure Docs for “Use Azure Pipelines“, it shed a little bit more light on this:
- Define pipelines using YAML syntax
- “Your code is now updated, built, tested, and packaged. It can be deployed to any target.”
- “Your code is now updated, built, tested, and packaged. It can be deployed to any target.”
- Define pipelines using the Classic interface
- “Use the Azure Pipelines classic editor to create and configure your build and release pipelines”
In short, the concept of build AND release pipelines are now effectively the Classic mode of Azure Pipelines, with the new hotness being a single pipeline, created through YAML and stored as code within a branch in your repository.
I understand why Microsoft has not fully removed the classic method, but it does take some time to understand for someone like me jumping in during the middle of a transition.
As it stands right now on the Feature Availability table, it looks like Deployment Groups and Gates are the only features that that YAML pipelines are not able to do compared to the classic Release pipeline.