---
title: YAML Pipelines
description: "Another benefit of using Git in your repos is being able to use [YAML pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/customize-pipeline?view=azure-devops) instead of the classic ones. And what is the most significant difference? An image is worth a thousand words, so here's a classic pipeline: ![Classic…"
url: "https://ariste.info/dynamics365almguide/yaml-pipelines/"
updated: "2025-10-28"
category: Unified experience ALM / Pipelines
---

# YAML Pipelines

Another benefit of using Git in your repos is being able to use [YAML pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/customize-pipeline?view=azure-devops) instead of the classic ones.

And what is the most significant difference? An image is worth a thousand words, so here's a classic pipeline:

![Classic pipeline on Azure DevOps](http://ariste.info/wp-content/uploads/2025/10/image.png)
Classic pipeline on Azure DevOps

And here's a YAML pipeline:

![YAML pipeline on Azure DevOps](http://ariste.info/wp-content/uploads/2025/10/image-1.png)
YAML pipeline on Azure DevOps

Yes, a YAML pipeline is code-based! There's still a minimal GUI for the tasks, but everything on your pipeline is defined in a file in [YAML format](https://en.wikipedia.org/wiki/YAML).

While it may look a bit harder to define everything in code, it's also more powerful, and **it can be source-controlled**! Yes, if it is a file in your repo, it's also possible to track changes to it, branch it, create pull requests to update it, etc.

Classic pipelines are still 100% supported, but as with TFVC, there are fewer improvements for them, and I'd recommend moving to YAML pipelines.

Almost everything you did in classic pipelines (both Build and Release) is doable in YAML:

- **Builds & multi-stage releases**: classic had separate build and release pipelines. In YAML you use **multi-stage pipelines** (stages → jobs → steps) to do CI and CD in one file.
- **Environments and deployment targets**: environments give you deployment history and are the place where you add approvals/checks.
- **Approvals, gates & checks**: classic pipelines had pre/post approvals and gates. In YAML you add **approvals and checks** to environments (branch control, required template, evaluate artifact, business hours, approval, REST/Azure Function, Azure Monitor alerts, exclusive lock, etc.).
- **Variables & secrets**: YAML supports **variable groups** (including Key Vault-linked) and inline variables/parameters.
- **Triggers & schedules**: YAML pipelines have **CI/PR triggers** and **schedules** in the file.

In the next sections, we'll learn how to create a build pipeline, a release pipeline, and how to add stages, schedules, and triggers in code.

#### Subscribe!

Receive an email when a new post is published
