Azure DevOps Pipeline — Choosing Between YAML and Classic UI

Image for post
Image for post

You’re here probably because you’ve been asked the question, or you’re asking the question — should I use Classic UI or the newer YAML definition for my Azure DevOps pipelines?

The answer is not that obvious for most people. And here I’ll list out a few pros & cons to make it easier for you to decide.

Image for post
Image for post
An example pipeline created with Classic UI editor

Classic UI is the original way Azure DevOps pipelines are created. You build a pipeline by using a GUI editor.

Image for post
Image for post
An example pipeline created from YAML, with the help of the assistant

YAML is the newer way where you can define the pipeline as code, in YAML format, which you then commit to a repo. Azure DevOps does have an assistant to help you create/modify the YAML pipelines, so you don’t have to remember every possible setting or keep having to look up references.

I’m a DevOps engineer helping 500+ engineers of different levels adopting DevOps practices. In our organisation we use Azure DevOps extensively, and I’ve been asked the “Classic vs YAML” question numerous times.

Now let’s get to the pros & cons.

💗 No DSL (domain specific language) to learn, which enables super fast on-boarding, especially for those that come from a SysAdmin background rather than a Developer background
💗 Very easy to make quick changes, which encourages experimentation
😐 Contrary to popular belief, it does have versioning, and you can revert to a previous one easily
👎 It’s being deprecated. This will become lower and lower in Microsoft’s priority list when it comes to new features

💗 It is code, and managed as a source file, so it will go through a standard code review / pull request process
💗 Because it is in the repo, when you need to revert the source to an early commit, the pipeline will be reverted together as well
💗 Like all text files, it is easy to manipulate and change multiple values in one go. If needed it can even be generated from a script
💗 Comparing changes is much easier compared to the Classic UI versioning, which means it’s easier to identify root cause if build breaks
💗 Encourages collaboration — it’s much easier to code snippets through Slack or whatever than cropped screenshots
💗 Supports Container Jobs, which is quite important to some teams
😐 Azure DevOps does have assistant to help building a YAML file, so it’s not as daunting as it first looks for inexperienced users
👎 Not as mature as the Classic UI — some features are still on the roadmap

At the end of the day, it depends very much on the use case and more importantly the people.

Personally, for a new project with a modern team, I’d go straight for YAML. For a brown-field project starting to adopt DevOps practices, I’d go for Classic to ease the people in, and later they can choose to migrate to YAML if they so wish to.

Agreed? Disagreed? Let me know.

Written by

I’m a DevOps Engineer looking after 60+ engineering teams, specialising in implementation of DevOps Transformation strategies

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store