I'm currently migrating an existing CI/CD pipeline build in Azure DevOps from the ‘classic’ build approach to YAML files. In the 'classic' pipeline you had the concept of a Task group.
Task groups
A task group allows you to encapsulate a sequence of tasks, already defined in a build or a release pipeline, into a single reusable task that can be added to a build or release pipeline, just like any other task. You can choose to extract the parameters from the encapsulated tasks as configuration variables, and abstract the rest of the task information.
The easiest way to create a task group is to select a sequence of tasks, open the shortcut menu, and choose Create Task Group:
Templates
When using YAML pipelines, you can achieve the same goal through templates. Templates let you define reusable content, logic, and parameters.
To create a template, just create a YAML file and copy the tasks that you want to include. Although the template can access the same variables that are accessible in the pipeline that uses this template, a cleaner way to pass information to the template is through parameters.
Here is a small example:
To include this template as part of your pipeline, you should specify the template file like below (including any parameters if applicable):
Remark: In the example above, I'm defining the template at the step level but know that this is also possible at the stage or job level.