David

Para hacer canalizaciones reutilizables y fáciles de mantener, Azure Pipelines permite usar plantillas YAML. Una plantilla es un fragmento de código de pipeline que define tareas comunes, lógica o parámetros reutilizables. Con plantillas puedes evitar repetir el mismo código en varios pipelines y facilitar cambios globales en un solo lugar.
Descargar código en GitHub
Estructura de archivos
Para este ejemplo tenemos dos archivos en la raíz del repositorio:
- azure-pipelines.yml: el pipeline principal que define el disparador (trigger) y extiende la plantilla.
- template.yml: una plantilla que define un parámetro booleano y un paso de script para imprimirlo.
/ (raíz del repositorio)
|-- azure-pipelines.yml
|-- template.yml

Desglose de azure-pipelines.yml
trigger:
main
extends:
template: template.yml
parameters:
mostrarMensaje: true
trigger: Define cuándo se ejecuta el pipeline. En este caso, se indica que se dispare el pipeline en cada commit a la rama main.
extends: Aquí es donde usamos la plantilla. Con template: template.yml le estamos diciendo al pipeline que use el contenido definido en el archivo template.yml.
parameters: Dentro de extends, listamos los parámetros que queremos pasar a la plantilla. En el ejemplo, asignamos mostrarMensaje: true, lo que sobrescribe el valor por defecto que defina la plantilla. Es decir, le estamos diciendo al pipeline que en la ejecución actual el parámetro booleano mostrarMensaje tenga el valor true.
Al usar extends, el YAML principal se extiende con lo que tiene la plantilla. Básicamente, Azure Pipelines reemplaza la referencia de extends por el contenido de template.yml, inyectando los valores de parámetros que definimos. Si el valor de un parámetro no coincide con su tipo (por ejemplo, pasar una palabra cuando se espera un booleano), el pipeline fallará en tiempo de compilación.
Desglose de template.yml
En este archivo definimos la plantilla que el pipeline principal incluye. Un ejemplo simple podría ser:
parameters:
- name: mostrarMensaje
type: boolean
default: false
steps:
- script: |
echo "El valor del parámetro mostrarMensaje es ${{ parameters.mostrarMensaje }}"
- parameters: Aquí declaramos una lista de parámetros que la plantilla puede recibir. Cada parámetro tiene un
name
(nombre), untype
(tipo de dato) y undefault
(valor por defecto). En nuestro caso definimos mostrarMensaje de tipoboolean
con valor por defectofalse
. Esto significa que, si el pipeline principal no sobreescribe este parámetro, por defecto será true. - steps: Después de los parámetros definimos los pasos que ejecutará el pipeline. Usamos un paso de script, que simplemente imprime en la salida el valor del parámetro. La sintaxis ${{ parameters.mostrarMensaje }} es la forma de insertar el valor del parámetro dentro del script en tiempo de compilación. Así, cuando se ejecute, veremos algo como El valor del parámetro mostrarMensaje es true.
Cómo sobreescribir parámetros desde el archivo principal
Como mostramos antes, en azure-pipelines.yml
dentro de parameters:
podemos dar nuevos valores a los parámetros de la plantilla. En el ejemplo, escribimos:
parameters:
mostrarMensaje: true
Esto hace que el parámetro mostrarMensaje de la plantilla tome el valor true
en lugar de su valor por defecto false
. De este modo, podemos reutilizar la misma plantilla con diferentes comportamientos. Si no hubiéramos definido mostrarMensaje
en el archivo principal, la plantilla imprimiría por defecto false
. Este mecanismo permite adaptar las plantillas a cada pipeline sin modificar el archivo de plantilla base.

Ventajas de usar plantillas
Usar plantillas en Azure Pipelines tiene varias ventajas importantes:
- Reutilización de código: Permiten definir una vez tareas o pasos comunes, y luego incluirlos en varios pipelines. Esto acelera el desarrollo y evita duplicar código. Por ejemplo, si varios proyectos necesitan ejecutar los mismos pasos de compilación o pruebas, se puede poner esa lógica en una plantilla y llamarla desde cada pipeline.
- Mantenimiento centralizado: Al tener el código común en una sola plantilla, cualquier cambio (como corregir errores o actualizar comandos) se hace en un solo lugar y se refleja en todas las canalizaciones que la usan.
- Parámetros y flexibilidad: Las plantillas soportan parámetros con tipos, lo que brinda seguridad y flexibilidad. Por ejemplo, podemos forzar que un valor sea booleano, número, lista, etc., y Azure Pipelines validará el tipo antes de ejecutar. Esto evita errores accidentales al pasar valores equivocados.
- Consistencia y buenas prácticas: Garantizan que todos los pipelines sigan el mismo flujo básico o estándares de la organización. Además, las plantillas pueden servir para restringir qué se ejecuta, añadiendo una capa de control de seguridad sobre las canalizaciones.