Descripción de Azure Pipelines
Puede automatizar los pasos del proceso de implementación usando una canalización. Cada vez que realiza un cambio en el código y lo confirma en el repositorio de Git, la canalización ejecuta el proceso predefinido. Una canalización puede comprobar si el código de Bicep cumple los estándares de calidad y, después, automatiza los pasos para implementar los recursos en Azure. El proceso se especifica en una definición de canalización que usted crea.
Azure Pipelines es una característica del servicio Azure DevOps. Azure DevOps también incluye Azure Repos, que hospeda los repositorios de Git que usa para almacenar el código y compartirlo con sus colaboradores. Una vez que el código de Bicep se almacena en Git, Azure Pipelines puede acceder a ese código para automatizar los procesos de implementación. En esta unidad, obtendrá información sobre Azure Pipelines.
¿Qué es una canalización?
Una canalización es el proceso repetible que se usa para probar e implementar el código definido en un archivo de configuración. Una canalización incluye todos los pasos que desee ejecutar y en qué orden.
Cuando se trabaja con Azure Pipelines, la canalización se define en un archivo de YAML. Un archivo de YAML es un archivo de texto estructurado, similar al de Bicep. Puede crear y editar archivos de YAML con cualquier editor de texto. En este módulo, usará Visual Studio Code. Visual Studio Code ofrece una extensión que puede facilitar la edición de archivos de canalización de YAML de Azure DevOps. La interfaz web de Azure DevOps también proporciona algunas herramientas para ver y editar los archivos de YAML de una canalización.
Nota:
Azure Pipelines incluye canalizaciones clásicas, una versión anterior de la característica de canalizaciones. Las canalizaciones basadas en YAML han reemplazado a las canalizaciones clásicas. En este módulo, solo trataremos las canalizaciones de YAML. Se recomienda usar canalizaciones de YAML.
Dado que el archivo de YAML de una canalización es un archivo de código, se almacena con el código de Bicep en el repositorio de Git. Para colaborar en la definición de una canalización, use las características de Git. Puede administrar diferentes versiones del archivo de canalización usando confirmaciones y ramas. En un módulo posterior, conocerá también otras características avanzadas de las canalizaciones, como las plantillas. Con las plantillas, es fácil reutilizar las definiciones de canalización.
Agentes y grupos
Hasta ahora, ha implementado los archivos de Bicep desde el equipo local. Después de escribir una plantilla de Bicep, puede implementarla en Azure mediante la CLI de Azure o Azure PowerShell. Estas herramientas usan los recursos del equipo para enviar la plantilla a Azure. Utilizan su identidad personal para autenticarse en Azure y comprobar que tiene los permisos necesarios para implementar los recursos.
Una canalización también necesita acceso a un equipo para poder ejecutar los pasos de la implementación. Azure Pipelines usa una máquina denominada agente. Un agente es un equipo configurado para ejecutar los pasos de implementación de una canalización. Cada agente tiene ya las herramientas de Bicep y Azure que usó en módulos anteriores, por lo que puede hacer las mismas cosas que usted hace desde su PC. En lugar de que una persona ejecute los comandos, el servicio Azure Pipelines le indica al agente que realice los pasos que usted ha definido en un archivo de YAML.
Azure Pipelines proporciona varios tipos de agente para diferentes sistemas operativos, como Ubuntu o Windows, y diferentes conjuntos de herramientas. Microsoft ejecuta estos agentes para que no tenga que mantener ninguna infraestructura de proceso para ellos. A veces, los agentes se denominan agentes hospedados por Microsoft o agentes hospedados, porque se hospedan en su nombre. Cuando se ejecuta la canalización, se crea automáticamente un agente hospedado. Cuando la canalización termina de ejecutarse, el agente hospedado se elimina automáticamente. No puede acceder directamente a los agentes hospedados, por lo que es importante que la canalización contenga todos los pasos necesarios para implementar la solución.
Un grupo de agentes contiene varios agentes del mismo tipo. Al crear la canalización, debe indicarle a Azure Pipelines el grupo de agentes que debe usarse para ejecutar cada conjunto de pasos. Cuando se ejecuta la canalización, espera a que un agente el grupo esté disponible y, después, le indica al agente que ejecute los pasos de implementación. Se puede asignar cualquier agente del grupo para ejecutar la canalización.
Nota:
Tiene la opción de crear un agente personalizado denominado agente autohospedado. Puede crearlo si hay un software específico que deba ejecutar como parte de la canalización o si necesita controlar con exactitud la configuración del agente. En este módulo no se analizan los agentes autohospedados, pero se proporciona un vínculo a más información en el resumen.
Desencadenadores
Para indicar a Azure Pipelines cuándo debe ejecutar la canalización, cree un desencadenador. Puede elegir entre varios tipos de desencadenadores. Por ahora, usará un desencadenador manual. Le indicará manualmente a Azure Pipelines cuándo debe iniciar la ejecución de la canalización. Más adelante en el módulo, conocerá otros tipos de desencadenadores.
Pasos
Un paso representa una operación que la canalización realiza. Es similar a un comando individual que ejecute en Bash o PowerShell. Para la mayoría de las implementaciones, se ejecutan varios pasos en una secuencia. Defina la secuencia y todos los detalles de cada paso en el archivo de YAML de la canalización.
Azure Pipelines ofrece dos tipos de pasos:
- Scripts. Utilice un paso de script para ejecutar un único comando o una secuencia de comandos en Bash, PowerShell o el shell de comandos de Windows.
- Tareas. Una tarea es una forma cómoda de acceder a muchas características diferentes sin escribir instrucciones de scripts. Por ejemplo, una tarea integrada puede ejecutar los cmdlets de Azure PowerShell y la CLI de Azure para probar el código o cargar archivos en un servidor FTP. Cualquiera puede escribir una tarea y compartirla con otros usuarios publicándola en Visual Studio Marketplace. Hay disponible un amplio conjunto de tareas comerciales y de código abierto.
Algunas personas prefieren usar instrucciones de scripts en lugar de tareas integradas, porque ofrecen más control sobre lo que se ejecuta. Otras personas prefieren usar las tareas para no tener que escribir y administrar scripts. En este módulo, usamos una combinación de ambos enfoques.
Trabajos
En Azure Pipelines, un trabajo representa un conjunto ordenado de pasos. Siempre se tiene al menos un trabajo en una canalización y, cuando se crean implementaciones complejas, es habitual tener más de un trabajo.
Nota:
Puede establecer que cada trabajo se ejecute en un grupo de agentes diferente. La ejecución de trabajos en grupos de agentes diferentes resulta útil cuando se compilan e implementan soluciones que necesitan usar sistemas operativos diferentes en distintas partes de la canalización de trabajos.
Por ejemplo, supongamos que va a crear una aplicación de iOS y el servicio de back-end correspondiente. Puede tener un trabajo que se ejecute en un grupo de agentes de macOS para crear la aplicación de iOS y otro trabajo que se ejecute en un grupo de agentes de Ubuntu o Windows para crear el back-end. Incluso puede indicar a la canalización que ejecute los dos trabajos simultáneamente, lo que acelera la ejecución de la canalización.
A lo largo de este módulo, declaramos el grupo de agentes en la raíz de los archivos de definición de canalización, de modo que todos los trabajos de las canalizaciones usan el mismo grupo de agentes.
Nota:
También puede usar fases en Azure Pipelines para dividir la canalización en fases lógicas y agregar comprobaciones manuales en varios puntos de la ejecución de la canalización. Obtendrá más información sobre las fases en futuros módulos.
Ejemplo de canalización básica
Ahora que conoce los conceptos básicos de Azure Pipelines, echemos un vistazo a una definición de canalización sencilla en YAML:
trigger: none
pool:
vmImage: ubuntu-latest
jobs:
- job:
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo We'll add more steps soon.
echo For example, we'll add our Bicep deployment step.
displayName: 'Run a multi-line script'
Veamos cada parte del archivo en detalle:
trigger
le indica a la canalización cuándo debe ejecutarse. En este caso,trigger: none
indica a Azure Pipelines que desea desencadenar manualmente la canalización.pool
indica a la canalización qué grupo de agentes debe usar cuando ejecuta los pasos de canalización. En este ejemplo, la canalización se ejecuta en un agente que tiene el sistema operativo Ubuntu, que procede del grupo de agentes hospedados por Microsoft.jobs
agrupa todos los trabajos de la canalización.job
indica a la canalización que tiene un único trabajo.Sugerencia
Si solo tiene un trabajo en la canalización, puede omitir las palabras clave
jobs
yjob
. Hemos incluidojob
aquí para dejar claro cómo funcionan estos conceptos juntos en una canalización.steps
enumera la secuencia de acciones que deben ejecutarse en el trabajo. El ejemplo de YAML incluye dos pasos. Los dos pasos ejecutan un script sencillo para mostrar un texto. Cada paso tiene un valor dedisplayName
, que es un nombre legible para el paso. Verá el nombre para mostrar al consultar los registros de canalización. Para crear un paso de script multilínea, use una barra vertical (|
) como se muestra en el ejemplo. Una vez que se ejecute el paso, verá las salidas en el registro de canalización.
Importante
En los archivos YAML, la sangría es importante. Observe el ejemplo de YAML. A algunas líneas del código de YAML se les aplica una sangría de dos o cuatro espacios. El número de espacios que use es importante. Si no aplica la sangría correctamente en el archivo, Azure Pipelines no puede interpretarlo. Visual Studio Code ayuda a buscar y corregir errores de sangría en el archivo de YAML.