Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Pipelines proporciona varios tipos de desencadenadores para configurar cómo se inicia la canalización.
- Los desencadenadores programados inician la canalización según una programación, como una compilación nocturna. En este artículo se proporcionan instrucciones sobre el uso de desencadenadores programados para ejecutar las canalizaciones según una programación.
- Los desencadenadores basados en eventos inician la canalización en respuesta a eventos, como la creación de una solicitud de incorporación de cambios o la inserción en una rama. Para obtener información sobre el uso de desencadenadores basados en eventos, consulte Desencadenadores en Azure Pipelines.
Puede combinar desencadenadores programados y basados en eventos en las canalizaciones, por ejemplo, para validar la compilación cada vez que se realiza una inserción (desencadenador de CI), cuando se realiza una solicitud de incorporación de cambios (desencadenador de pr) y una compilación nocturna (desencadenador programado). Si desea compilar la canalización solo según una programación y no en respuesta a los desencadenadores basados en eventos, asegúrese de que la canalización no tiene ningún otro desencadenador habilitado. Por ejemplo, las canalizaciones de YAML en un repositorio de GitHub tienen desencadenadores de CI y desencadenadores de PR habilitados de forma predeterminada. Para obtener información sobre cómo deshabilitar desencadenadores predeterminados, consulte Desencadenadores en Azure Pipelines y vaya a la sección que cubre el tipo de repositorio.
Desencadenadores programados
Importante
Los desencadenadores programados definidos mediante la interfaz de usuario de configuración de canalización de YAML tienen prioridad sobre los desencadenadores programados de YAML.
Si la canalización de YAML tiene desencadenadores programados de YAML y desencadenadores programados definidos por la interfaz de usuario, solo se ejecutan los desencadenadores programados definidos por la interfaz de usuario. Para ejecutar los desencadenadores programados definidos por YAML en la canalización de YAML, debe quitar los desencadenadores programados definidos en la interfaz de usuario de configuración de canalización de YAML. Una vez quitados todos los desencadenadores programados de la interfaz de usuario, se debe realizar una inserción para que los desencadenadores programados de YAML empiecen a evaluarse.
Para eliminar desencadenadores programados de interfaz de usuario de una canalización DE YAML, consulte Configuración de la interfaz de usuario invalida los desencadenadores programados de YAML.
Los desencadenadores programados configuran una canalización para que se ejecute según una programación definida mediante la sintaxis cron.
schedules:
- cron: string # cron syntax defining a schedule
displayName: string # friendly name given to a specific schedule
branches:
include: [ string ] # which branches the schedule applies to
exclude: [ string ] # which branches to exclude from the schedule
always: boolean # whether to always run the pipeline or only if there have been source code or pipeline settings changes since the last successful scheduled run. The default is false.
batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
# batch is available in Azure DevOps Server 2022.1 and higher
Las canalizaciones programadas en YAML tienen las siguientes restricciones.
- La zona horaria de las programaciones cron es UTC. Puede obtener ayuda de IA de GitHub Copilot para crear las expresiones cron.
- Si especifica una
excludecláusula sin unaincludecláusula parabranches, es equivalente a especificar*en laincludecláusula . - No se pueden usar variables de canalización al especificar programaciones.
- Si usa plantillas en el archivo YAML, las programaciones deben especificarse en el archivo YAML principal y no en los archivos de plantilla.
- Si una canalización está deshabilitada, las actualizaciones realizadas en su archivo YAML no actualizarán automáticamente los desencadenadores de programación.
Consideraciones de rama para desencadenadores programados
Los desencadenadores programados se evalúan para una rama cuando se producen los siguientes eventos.
- Se crea una canalización.
- El archivo YAML de una canalización se actualiza, ya sea desde una inserción o editándolo en el editor de canalizaciones.
- La ruta de acceso del archivo YAML de una canalización se actualiza para hacer referencia a otro archivo YAML. Este cambio solo actualiza la rama predeterminada y, por tanto, solo recoge programaciones en el archivo YAML actualizado para la rama predeterminada. Si cualquier otra rama combina posteriormente la rama predeterminada, por ejemplo
git pull origin main, los desencadenadores programados del archivo YAML recién al que se hace referencia se evalúan para esa rama. - Se crea una nueva rama.
Después de que se produzca uno de estos eventos en una rama, se agregan las ejecuciones programadas para esa rama, si esa rama coincide con los filtros de rama de los desencadenadores programados contenidos en el archivo YAML de esa rama.
Importante
Las ejecuciones programadas para una rama solo se agregan si la rama coincide con los filtros de rama para los desencadenadores programados en el archivo YAML de esa rama concreta.
Por ejemplo, se crea una canalización con la programación siguiente y esta versión del archivo YAML se comprueba en la main rama. Esta programación compila la main rama diariamente.
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
A continuación, se crea una nueva rama basada en main, denominada new-feature. Los desencadenadores programados del archivo YAML de la nueva rama se leen y, dado que no hay ninguna coincidencia para la new-feature rama, no se realizan cambios en las compilaciones programadas y la new-feature rama no se compila mediante un desencadenador programado.
Si new-feature se agrega a la branches lista y este cambio se inserta en la new-feature rama, se lee el archivo YAML y, como new-feature ahora está en la lista de ramas, se agrega una compilación programada para la new-feature rama.
# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- new-feature
Ahora tenga en cuenta que se crea una rama denominada release en mainfunción de y, a continuación release , se agrega a los filtros de rama en el archivo YAML de la main rama, pero no en la rama recién creada release .
# YAML file in the release branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
# YAML file in the main branch with release added to the branches list
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- release
Dado que release se agregó a los filtros de rama de la main rama, pero no a los filtros de rama de la release rama, la release rama no se compilará según esa programación. Solo cuando la release rama se agrega a los filtros de rama en el archivo YAML de la rama de versión , la compilación programada se agregará al programador.
Consideraciones de batch para desencadenadores programados
Nota:
La batch propiedad está disponible en Azure DevOps Server 2022.1 y versiones posteriores.
La batch propiedad configura si se va a ejecutar la canalización si la ejecución programada anteriormente está en curso. Cuando batch es true, una nueva ejecución de canalización no se iniciará debido a la programación si una ejecución de canalización anterior sigue en curso. El valor predeterminado es false.
La batch propiedad se ve afectada por el valor de la always propiedad . Cuando always es true, la canalización se ejecuta según la programación cron, incluso cuando batch hay true y hay una ejecución en curso.
| Siempre | Batch | Comportamiento |
|---|---|---|
false |
false |
La canalización solo se ejecuta si hay un cambio con respecto a la última ejecución de canalización programada correcta, incluso si hay una ejecución en curso desde el último desencadenador programado. |
false |
true |
La canalización solo se ejecuta si hay un cambio con respecto a la última ejecución de canalización programada correcta y no hay ninguna ejecución de canalización programada en curso. |
true |
false |
La canalización se ejecuta según la programación cron. |
true |
true |
La canalización se ejecuta según la programación cron aunque haya una ejecución en curso. |
Variable Build.CronSchedule.DisplayName
Nota:
La Build.CronSchedule.DisplayName variable está disponible en Azure DevOps Server 2022.1 y versiones posteriores.
Cuando se ejecuta una canalización debido a un desencadenador programado cron, la variable predefinida Build.CronSchedule.DisplayName contiene la displayName de la programación cron que desencadenó la ejecución de la canalización.
La canalización de YAML puede contener varias programaciones cron y es posible que quiera que la canalización ejecute diferentes fases o trabajos en función de las ejecuciones de programación cron. Por ejemplo, tiene una compilación nocturna y una compilación semanal, y desea ejecutar una determinada fase solo durante la compilación nocturna. Puede usar la Build.CronSchedule.DisplayName variable en una condición de trabajo o fase para determinar si se debe ejecutar ese trabajo o fase.
- stage: stage1
# Run this stage only when the pipeline is triggered by the
# "Daily midnight build" cron schedule
condition: eq(variables['Build.CronSchedule.DisplayName'], 'Daily midnight build')
Para obtener más ejemplos, consulte los ejemplos de schedules.cron.
Seleccione los días y horas en los que desea ejecutar la compilación mediante el editor clásico.
Si el repositorio es Git, GitHub u Otro Git de Azure Repos, también puede especificar ramas para incluir y excluir. Si desea usar caracteres comodín, escriba la especificación de rama (por ejemplo, ) y presione features/modules/*Entrar.
Examples
En el ejemplo siguiente se definen dos programaciones:
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- releases/*
exclude:
- releases/ancient/*
- cron: '0 12 * * 0'
displayName: Weekly Sunday build
branches:
include:
- releases/*
always: true
La primera programación, Compilación diaria de medianoche, ejecuta una canalización a medianoche todos los días, pero solo si el código ha cambiado desde la última ejecución programada correcta, para main y todas las ramas, excepto las releases/* ramas releases/ancient/*de .
La segunda programación, compilación semanal del domingo, ejecuta una canalización al mediodía los domingos, tanto si el código ha cambiado como si no desde la última ejecución, para todas las releases/* ramas.
Nota:
La zona horaria de las programaciones cron es UTC, por lo que en estos ejemplos, la compilación de medianoche y la compilación de mediodía están a medianoche y mediodía en UTC.
Para obtener más ejemplos, consulte Migración desde el editor clásico.
Ejemplo: Compilación nocturna del repositorio de Git en varias zonas horarias
En este ejemplo, el desencadenador programado del editor clásico tiene dos entradas, que generan las siguientes compilaciones.
Todos los lunes a viernes a las 3:00 (UTC + 5:30 zona horaria), cree ramas que cumplan los criterios de filtro de
features/india/*rama.
Todos los lunes a viernes a las 3:00 (UTC - 5:00 zona horaria), cree ramas que cumplan los criterios de filtro de
features/nc/*rama
Ejemplo: Compilación nocturna con diferentes frecuencias
En este ejemplo, el desencadenador programado del editor clásico tiene dos entradas, lo que genera las siguientes compilaciones.
Todos los lunes: viernes a las 3:00 UTC, compile ramas que cumplan los criterios de filtro de
mainrama yreleases/*
Todos los domingos a las 3:00 UTC, compile la
releases/lastversionrama, incluso si el origen o la canalización no han cambiado
Sintaxis cron
Cada expresión cron del desencadenador programado de Azure Pipelines es una expresión delimitada por espacio con cinco entradas en el orden siguiente. La expresión se incluye entre comillas 'simples.
mm HH DD MM DW
\ \ \ \ \__ Days of week
\ \ \ \____ Months
\ \ \______ Days
\ \________ Hours
\__________ Minutes
| Campo | Valores aceptados |
|---|---|
| Minutos | De 0 a 59 |
| Horas | De 0 a 23 |
| Días | De 1 a 31 |
| Meses | De 1 a 12, nombres completos en inglés, primeras tres letras de nombres en inglés |
| Días de la semana | De 0 a 6 (a partir del domingo), nombres completos en inglés, primeras tres letras de nombres en inglés |
Los valores pueden tener los siguientes formatos.
| Formato | Example | Description |
|---|---|---|
| Wildcard | * |
Coincide con todos los valores de este campo. |
| Valor único | 5 |
Especifica un valor único para este campo. |
| Delimitado por comas | 3,5,6 |
Especifica varios valores para este campo. Se pueden combinar varios formatos, como 1,3-6 |
| Gamas | 1-3 |
Intervalo inclusivo de valores para este campo |
| Intervalos |
*/4 o 1-5/2 |
Intervalos para que coincidan con este campo, como cada cuarto valor o el intervalo de 1 a 5 con un intervalo de paso de 2 |
| Example | Expresión Cron |
|---|---|
| Compilar todos los lunes, miércoles y viernes a las 6:00 p. m. |
0 18 * * Mon,Wed,Fri, 0 18 * * 1,3,5 o 0 18 * * 1-5/2 |
| Compilación cada 6 horas |
0 0,6,12,18 * * *, 0 */6 * * * o 0 0-18/6 * * * |
| Compilar cada 6 horas a partir de las 9:00 a. m. |
0 9,15,21 * * * o 0 9-21/6 * * * |
Para obtener más información sobre los formatos admitidos, vea Expresión crontab.
Uso de GitHub Copilot para crear una expresión cron
Puede obtener ayuda de inteligencia artificial de GitHub Copilot para crear expresiones cron o convertir expresiones cron existentes de la zona horaria local a UTC.
Las programaciones cron de Azure Pipelines se definen en UTC, por lo que las programaciones como Compilar todos los lunes, miércoles y viernes a las 6:00 p. m . deben crearse mediante la sintaxis cron y convertir de la zona horaria local a UTC.
Personalice las siguientes indicaciones para crear expresiones cron o convertir expresiones cron a UTC desde la zona horaria que usó para crear las expresiones.
En el ejemplo siguiente, se le pide a Copilot que cree una programación cron UTC para compilar cada lunes, miércoles y viernes a las 6:00 p. m. hora estándar del este.
Build a UTC cron expression for Monday, Wednesday, and Friday at 6:00 PM Eastern Standard Time
Si ya tiene una expresión cron en la zona horaria local, puede pedir a Copilot que la convierta a UTC. En este ejemplo, una programación cron para compilar cada lunes, miércoles y viernes a las 6:00 p. m. (0 18 * * Mon,Wed,Fri) hora estándar del este se convierte a UTC.
Convert the following cron expression from Eastern Standard Time to UTC: 0 18 * * Mon,Wed,Fri
La conversión de una expresión cron a UTC puede requerir cambiar los días de la semana en la expresión. En el ejemplo siguiente, se le pide a Copilot que cree una programación cron UTC para compilar de lunes a viernes a las 12:30 AM Hora estándar de Europa Central. La hora estándar de Europa Central está por delante de utc, por lo que la expresión resultante comienza a finales de la noche del domingo en lugar de a principios de la mañana del lunes y termina el jueves.
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time
Para obtener detalles adicionales sobre la expresión cron generada por Copilot, puede pedir a Copilot que proporcione una explicación de la expresión cron generada en el símbolo del sistema.
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time and explain the different parts of the cron expression
Copilot funciona con IA, por lo que es posible que se produzcan sorpresas y errores. Para obtener más información, consulte Preguntas más frecuentes sobre el uso general de Copilot.
Vista ejecuciones programadas
Para ver una vista previa de las próximas compilaciones programadas, elija Ejecuciones programadas en el menú contextual de la página de detalles de la canalización para la canalización.
Importante
La vista de ejecuciones programadas solo muestra las canalizaciones programadas para ejecutarse en un plazo de siete días a partir de la fecha actual. Si la programación cron tiene un intervalo superior a 7 días y la siguiente ejecución está programada para iniciarse después de siete días desde la fecha actual, no se mostrará en la vista Ejecuciones programadas .
Después de crear o actualizar los desencadenadores programados, puede comprobarlos mediante la vista Ejecuciones programadas.
En este ejemplo se muestran las ejecuciones programadas para la programación siguiente.
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
Las ventanas Ejecuciones programadas muestran las horas convertidas en la zona horaria local establecida en el equipo que se usa para ir al portal de Azure DevOps. En este ejemplo se muestra una captura de pantalla tomada en la zona horaria EST.
Nota:
Si actualiza la programación de una canalización en ejecución, la vista Ejecuciones programadas no se actualiza con la nueva programación hasta que se completa la canalización que se está ejecutando actualmente.
Para ver una vista previa de las próximas compilaciones programadas, elija Ejecuciones programadas en el menú contextual de la página de detalles de la canalización para la canalización.
Después de crear o actualizar los desencadenadores programados, puede comprobarlos mediante esta vista.
Ejecución incluso cuando no hay cambios en el código
De forma predeterminada, la canalización no se ejecuta como programada si no se han producido cambios en el código desde la última ejecución programada correcta. Por ejemplo, tenga en cuenta que ha programado una canalización para que se ejecute cada noche a las 9:00 p. m. Durante los días laborables, se insertan varios cambios en el código. La canalización se ejecuta según la programación. Durante los fines de semana, no realiza ningún cambio en el código. Si no se han producido cambios en el código desde la ejecución programada el viernes, la canalización no se ejecuta según lo programado durante el fin de semana.
Para forzar que una canalización se ejecute incluso cuando no haya cambios en el código, puede usar la always palabra clave .
schedules:
- cron: ...
...
always: true
Para configurar la canalización programada para compilar solo si se ha producido un cambio desde la última compilación, compruebe Solo las compilaciones de programación si el origen o la canalización han cambiado.
Límites en el número de ejecuciones programadas en canalizaciones de YAML
Hay ciertos límites sobre la frecuencia con la que se puede programar la ejecución de una canalización. Estos límites se han implementado para evitar el uso indebido de los recursos de Azure Pipelines, especialmente los agentes hospedados por Microsoft. Los límites son:
- alrededor de 1000 ejecuciones por canalización por semana
- 10 ejecuciones por canalización por 15 minutos
Migración desde el editor clásico
En los ejemplos siguientes se muestra cómo migrar las programaciones del editor clásico a YAML.
- Ejemplo: Compilación nocturna del repositorio de Git en varias zonas horarias
- Ejemplo: Compilación nocturna con diferentes frecuencias
Ejemplo: Compilación nocturna del repositorio de Git en varias zonas horarias
En este ejemplo, el desencadenador programado del editor clásico tiene dos entradas, lo que genera las siguientes compilaciones.
Todos los lunes a viernes a las 3:00 (UTC + 5:30 zona horaria), cree ramas que cumplan los criterios de filtro de
features/india/*rama.
Todos los lunes a viernes a las 3:00 (UTC - 5:00 zona horaria), cree ramas que cumplan los criterios de filtro de
features/nc/*rama
El desencadenador programado de YAML equivalente es:
schedules:
- cron: '30 21 * * Sun-Thu'
displayName: M-F 3:00 AM (UTC + 5:30) India daily build
branches:
include:
- /features/india/*
- cron: '0 8 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC - 5) NC daily build
branches:
include:
- /features/nc/*
En la primera programación, M-F 3:00 (UTC + 5:30) Compilación diaria de India, la sintaxis cron (mm HH DD MM DW) es 30 21 * * Sun-Thu.
- Minutos y horas:
30 21se asigna a21:30 UTC(9:30 PM UTC). Dado que la zona horaria especificada en el editor clásico es UTC + 5:30, necesitamos restar 5 horas y 30 minutos de la hora de compilación deseada de 3:00 AM para llegar a la hora UTC deseada para especificar para el desencadenador YAML. Puede obtener ayuda de IA de GitHub Copilot para crear la expresión cron. - Los días y meses se especifican como caracteres comodín, ya que esta programación no especifica que se ejecute solo en determinados días del mes o en un mes específico.
- Días de la semana:
Sun-Thudebido a la conversión de zona horaria, para que nuestras compilaciones se ejecuten a las 3:00 a.m. en la zona horaria UTC + 5:30 india, es necesario especificar que se inicien el día anterior en hora UTC. También podríamos especificar los días de la semana como0-4o0,1,2,3,4.
En la segunda programación, la compilación diaria M-F 3:00 (UTC - 5) NC, la sintaxis cron es 0 8 * * Mon-Fri.
- Minutos y horas:
0 8: se asigna a8:00 AM UTC. Dado que la zona horaria especificada en el editor clásico es UTC - 5:00, es necesario agregar 5 horas a partir de la hora de compilación deseada de 3:00 AM para llegar a la hora UTC deseada para especificar para el desencadenador YAML. Puede obtener ayuda de IA de GitHub Copilot para crear la expresión cron. - Los días y meses se especifican como caracteres comodín, ya que esta programación no especifica que se ejecute solo en determinados días del mes o en un mes específico.
- Días de la semana:
Mon-Friporque nuestras conversiones de zona horaria no abarcan varios días de la semana para nuestra programación deseada, no es necesario realizar ninguna conversión aquí. También podríamos especificar los días de la semana como1-5o1,2,3,4,5.
Importante
Las zonas horarias UTC de los desencadenadores programados de YAML no tienen en cuenta el horario de verano.
Sugerencia
Al usar 3 días de letra de la semana y desear un intervalo de varios días a través del Sol, Sun debe considerarse el primer día de la semana, por ejemplo, para una programación de medianoche EST, jueves a domingo, la sintaxis cron es 0 5 * * Sun,Thu-Sat.
Ejemplo: Compilación nocturna con diferentes frecuencias
En este ejemplo, el desencadenador programado del editor clásico tiene dos entradas, lo que genera las siguientes compilaciones.
Todos los lunes: viernes a las 3:00 UTC, compile ramas que cumplan los criterios de filtro de
mainrama yreleases/*
Todos los domingos a las 3:00 UTC, compile la
releases/lastversionrama, incluso si el origen o la canalización no han cambiado
El desencadenador programado de YAML equivalente es:
schedules:
- cron: '0 3 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC) daily build
branches:
include:
- main
- /releases/*
- cron: '0 3 * * Sun'
displayName: Sunday 3:00 AM (UTC) weekly latest version build
branches:
include:
- /releases/lastversion
always: true
En la primera programación, la compilación diaria de M-F 3:00 (UTC), la sintaxis cron es 0 3 * * Mon-Fri.
- Minutos y horas:
0 3: se asigna a3:00 AM UTC. Dado que la zona horaria especificada en el editor clásico es UTC, no es necesario realizar ninguna conversión de zona horaria. - Los días y meses se especifican como caracteres comodín, ya que esta programación no especifica que se ejecute solo en determinados días del mes o en un mes específico.
- Días de la semana :
Mon-Friporque no hay ninguna conversión de zona horaria, los días del mapa de la semana directamente desde la programación del editor clásico. También podríamos especificar los días de la semana como1,2,3,4,5.
En la segunda programación, la compilación de la versión más reciente semanal del domingo 3:00 (UTC), la sintaxis cron es 0 3 * * Sun.
- Minutos y horas:
0 3: se asigna a3:00 AM UTC. Dado que la zona horaria especificada en el editor clásico es UTC, no es necesario realizar ninguna conversión de zona horaria. - Los días y meses se especifican como caracteres comodín, ya que esta programación no especifica que se ejecute solo en determinados días del mes o en un mes específico.
- Días de la semana:
Sunporque nuestras conversiones de zona horaria no abarcan varios días de la semana para nuestra programación deseada, no es necesario realizar ninguna conversión aquí. También podríamos especificar los días de la semana como0. - También se especifica
always: true, ya que esta compilación está programada para ejecutarse si se ha actualizado o no el código fuente.
Preguntas más frecuentes
- Quiero que mi canalización solo se ejecute según la programación y no cuando alguien inserte un cambio en una rama
- He definido una programación en el archivo YAML. Pero no se ejecutó. ¿¿Qué pasó?
- Mis programaciones de YAML funcionaban bien. Pero dejaron de trabajar ahora. ¿Cómo puedo depurar esto?
- Mi código no ha cambiado, pero se desencadena una compilación programada. ¿Por qué?
- Veo la ejecución planeada en el panel Ejecuciones programadas. Sin embargo, no se ejecuta en ese momento. ¿Por qué?
- Programaciones definidas en el trabajo de canalización de YAML para una rama, pero no para la otra. ¿Cómo lo arreglo?
Quiero que mi canalización solo se ejecute según la programación y no cuando alguien inserte un cambio en una rama
Si desea que la canalización se ejecute solo según la programación y no cuando alguien inserte un cambio en una rama o combine un cambio en la rama principal, debe deshabilitar explícitamente los desencadenadores de CI y PR predeterminados en la canalización.
Para deshabilitar los desencadenadores predeterminados de CI y PR, agregue las siguientes instrucciones a la canalización de YAML y compruebe que no ha invalidado los desencadenadores de canalización de YAML con desencadenadores de interfaz de usuario.
trigger: none
pr: none
Para obtener más información, consulte definición de pr y definición de desencadenador.
He definido una programación en el archivo YAML. Pero no se ejecutó. ¿¿Qué pasó?
Compruebe las siguientes ejecuciones que Azure Pipelines ha programado para la canalización. Para encontrar estas ejecuciones, seleccione la acción Ejecuciones programadas en la canalización. La lista se filtra para mostrar solo las próximas ejecuciones en los próximos días. Si esto no cumple con sus expectativas, probablemente sea el caso de que haya escrito mal la programación cron o que no tenga la programación definida en la rama correcta. Lea el tema anterior para comprender cómo configurar programaciones. Vuelva a evaluar la sintaxis cron. Todas las horas de las programaciones cron están en UTC.
Realice un pequeño cambio trivial en el archivo YAML e inserte esa actualización en el repositorio. Si hay algún problema al leer las programaciones del archivo YAML anteriormente, debería corregirse ahora.
Si tiene alguna programación definida en la interfaz de usuario, no se respetan las programaciones de YAML. Asegúrese de que no tiene ninguna programación de interfaz de usuario; para ello, vaya al editor de la canalización y, a continuación, seleccione Desencadenadores.
Hay un límite en el número de ejecuciones que puede programar para una canalización. Obtenga más información sobre los límites.
Si no hay ningún cambio en el código, es posible que Azure Pipelines no inicie nuevas ejecuciones. Obtenga información sobre cómo invalidar este comportamiento.
Mis programaciones de YAML funcionaban bien. Pero dejaron de trabajar ahora. ¿Cómo puedo depurar esto?
Si no ha especificado
always:true, la canalización no se programará a menos que haya actualizaciones realizadas en el código. Compruebe si se han producido cambios en el código y cómo configuró las programaciones.Hay un límite en el número de veces que se puede programar la canalización. Compruebe si ha superado esos límites.
Compruebe si alguien ha habilitado más programaciones en la interfaz de usuario. Abra el editor de la canalización y seleccione Desencadenadores. Si definieron programaciones en la interfaz de usuario, no se respetarán las programaciones de YAML.
Compruebe si la canalización está en pausa o deshabilitada. Seleccione Configuración para la canalización.
Compruebe las siguientes ejecuciones que Azure Pipelines ha programado para la canalización. Para encontrar estas ejecuciones, seleccione la acción Ejecuciones programadas en la canalización. Si no ve las programaciones que esperaba, realice un pequeño cambio trivial en el archivo YAML e inserte la actualización en el repositorio. Esto debe resincronizar las programaciones.
Si usa GitHub para almacenar el código, es posible que GitHub haya limitado Azure Pipelines cuando intentó iniciar una nueva ejecución. Compruebe si puede iniciar una nueva ejecución manualmente.
Mi código no ha cambiado, pero se desencadena una compilación programada. ¿Por qué?
Es posible que haya habilitado una opción para ejecutar siempre una compilación programada aunque no haya cambios en el código. Si usa un archivo YAML, compruebe la sintaxis de la programación en el archivo YAML. Si usa canalizaciones clásicas, compruebe si ha activado esta opción en los desencadenadores programados.
Es posible que haya actualizado la canalización de compilación o alguna propiedad de la canalización. Esto hará que se programe una nueva ejecución incluso si no ha actualizado el código fuente. Compruebe el historial de cambios en la canalización mediante el editor clásico.
Es posible que haya actualizado la conexión de servicio utilizada para conectarse al repositorio. Esto hará que se programe una nueva ejecución incluso si no ha actualizado el código fuente.
Azure Pipelines comprueba primero si hay actualizaciones en el código. Si Azure Pipelines no puede acceder al repositorio o obtener esta información, creará una ejecución informativa. Se trata de una compilación ficticia para informarle de que Azure Pipelines no puede acceder al repositorio.
Es posible que la canalización no tenga una compilación completamente correcta. Para determinar si se debe programar una nueva compilación o no, Azure DevOps busca la última compilación programada correcta por última vez. Si no encuentra una, desencadena una nueva compilación programada. Las compilaciones programadas parcialmente correctas no se consideran correctas, por lo que si la canalización solo tiene compilaciones parcialmente correctas, Azure DevOps desencadenará compilaciones programadas, incluso si el código no ha cambiado.
Veo la ejecución planeada en el panel Ejecuciones programadas. Sin embargo, no se ejecuta en ese momento. ¿Por qué?
- El panel Ejecuciones programadas muestra todas las programaciones posibles. Sin embargo, es posible que realmente no se ejecute a menos que haya realizado actualizaciones reales en el código. Para forzar que una programación siempre se ejecute, asegúrese de que ha establecido la propiedad always en la canalización YAML o de que ha activado la opción para ejecutarse siempre en una canalización clásica.
Programaciones definidas en el trabajo de canalización de YAML para una rama, pero no para la otra. ¿Cómo lo arreglo?
Las programaciones se definen en archivos YAML y estos archivos están asociados a ramas. Si desea que una canalización se programe para una rama determinada, por ejemplo features/X, asegúrese de que el archivo YAML de esa rama tiene definida la programación cron y que tiene las inclusiones de rama correctas para la programación. El archivo YAML de la features/X rama debe tener lo siguiente schedule en este ejemplo:
schedules:
- cron: '0 12 * * 0' # replace with your schedule
branches:
include:
- features/X
Para obtener más información, consulte Consideraciones de rama para desencadenadores programados.