Yet Another Markup Language
Have you ever heard of YAML- a weird name for some scripting language?
Well, if you are working within the software development industry and did not hear about it until now, you should probably keep reading this blog.
For a long time, complete infrastructure was managed through the graphical interface, where you use editors to add, delete or modify your pipelines. Well, with a modern approach where everything is managed through code, pipelines for managing builds, tests, and deployments are also pushed to the code repo. This article will focus on Microsoft technology, cloud-based continuous integration, and continuous delivery (CI/CD) solution called Azure Pipelines.
Essentially, Azure Pipelines can be utilized using two approaches: Classic pipelines and YAML pipelines. At the end of the day, both of them will do more or less the same job as the core principles are the same – build, test, and deploy. If you dig into it more where you want to have a bit more customization, flexibility, and reproducibility, then things start to differ. The differences between classic pipelines and YAML pipelines can be broken down into different areas.
Let’s start with Configuration. Storing the pipeline configuration in a YAML file allows the YAML pipeline to be treated like any other code. This allows versioning, pull request reviews, and tracking in the source code repository. On the other hand, the configuration of Classic pipelines is easier and straightforward because it is performed in a graphical interface where programming skills are not required.
The second area is Customization. Compared to Classic pipelines, the YAML pipeline offers users a wider range of flexibility and customization options. Users are able to define their own scripts and commands to build, test, and deploy their applications, granting them greater control over their pipelines and the freedom to use any language or tool they prefer. Conversely, Classic pipelines have a limited set of predefined tasks that can be included in the pipeline.
The third area is Reproducibility. YAML provides better reproducibility, compared to the Classic pipeline. This is because the YAML pipeline is defined as code, making it simpler to replicate the pipeline on another machine or in a different environment. Whenever you need to migrate setups from one project or organization to another, YAML reproducibility will make your life easier. This feature enhances the ability to test and debug pipelines, as well as guaranteeing that the pipeline operates consistently on every occasion. In contrast, Classic pipelines are more challenging to reproduce because the pipeline configuration is kept on the Azure Portal.
The fourth area is Learning Curve. The Classic pipeline is more user-friendly and has a lower learning curve than the YAML pipeline. The Classic pipeline's graphical interface makes it easy to create and manage pipelines without any programming knowledge. However, the YAML pipeline requires some understanding of the YAML syntax and the Azure Pipelines structure. This requirement makes it more difficult for users who are not familiar with programming to create and manage pipelines.
In conclusion, both classic pipelines and YAML pipelines have their pros and cons. If you want to keep it simple and easy, use Classic Pipelines. Otherwise, YAML is definitely a way forward for you if you want more customization, flexibility, and reproducibility. Well, that’s my view on the YAML, Yet Another Markup Language or YAML Ain’t Markup Language – depending on whom you ask.