definizione schedules.cron
Un trigger pianificato specifica una pianificazione in base alla quale vengono compilati i rami.
schedules:
- cron: string # Required as first property. Cron syntax defining a schedule in UTC time.
displayName: string # Optional friendly name given to a specific schedule.
branches: # Branch names to include or exclude for triggering a run.
include: [ string ] # List of items to include.
exclude: [ string ] # List of items to exclude.
batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
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.
schedules:
- cron: string # Required as first property. Cron syntax defining a schedule in UTC time.
displayName: string # Optional friendly name given to a specific schedule.
branches: # Branch names to include or exclude for triggering a run.
include: [ string ] # List of items to include.
exclude: [ string ] # List of items to exclude.
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.
Definizioni che fanno riferimento a questa definizione: pianificazioni
Proprietà
cron
stringa. Obbligatorio come prima proprietà.
sintassi Cron che definisce una pianificazione nell'ora UTC.
displayName
stringa.
Nome descrittivo facoltativo assegnato a una pianificazione specifica.
branches
includeExcludeFilters.
nomi di ramo da includere o escludere per l'attivazione di un'esecuzione.
batch
booleano .
La proprietà batch
consente di configurare se eseguire la pipeline se l'esecuzione pianificata in precedenza è in corso. Quando batch
è true
, una nuova esecuzione della pipeline non verrà avviata a causa della pianificazione se è ancora in corso un'esecuzione della pipeline precedente. Il valore predefinito è false
.
La proprietà batch
è interessata dall'impostazione della proprietà always
. Quando always
è true
, la pipeline viene eseguita in base alla pianificazione cron, anche quando batch
è true
e viene eseguita un'esecuzione in corso.
Sempre | Gruppo | Comportamento |
---|---|---|
false |
false |
La pipeline viene eseguita solo se è presente una modifica rispetto all'ultima esecuzione pianificata della pipeline. |
false |
true |
La pipeline viene eseguita solo se è presente una modifica rispetto all'ultima esecuzione pianificata della pipeline pianificata e non è prevista alcuna esecuzione della pipeline in corso. |
true |
false |
La pipeline viene eseguita in base alla pianificazione cron. |
true |
true |
La pipeline viene eseguita in base alla pianificazione cron anche se è in corso un'esecuzione. |
always
booleano .
Indica se eseguire sempre la pipeline o solo se sono state apportate modifiche al codice sorgente dall'ultima esecuzione pianificata; il valore predefinito è false.
Osservazioni:
Se non si specifica alcun trigger pianificato, non vengono eseguite compilazioni pianificate.
Nota
Se si specifica una clausola exclude
senza una clausola include
per branches
, equivale a specificare *
nella clausola include
.
Importante
I trigger pianificati definiti usando l'interfaccia utente delle impostazioni della pipeline hanno la precedenza sui trigger pianificati YAML.
Se la pipeline YAML include trigger pianificati YAML e trigger pianificati definiti dall'interfaccia utente, vengono eseguiti solo i trigger pianificati definiti dall'interfaccia utente. Per eseguire i trigger pianificati YAML definiti nella pipeline YAML, è necessario rimuovere i trigger pianificati definiti nell'interfaccia utente delle impostazioni della pipeline. Dopo aver rimosso tutti i trigger pianificati dell'interfaccia utente, è necessario eseguire un push affinché i trigger pianificati YAML inizino a essere valutati.
Per eliminare i trigger pianificati dell'interfaccia utente da una pipeline YAML, vedere impostazioni dell'interfaccia utente sostituiscono i trigger pianificati YAML.
Variabile Build.CronSchedule.DisplayName
Quando una pipeline è in esecuzione a causa di un trigger pianificato cron, la variabile di Build.CronSchedule.DisplayName
predefinita contiene il displayName
della pianificazione cron che ha attivato l'esecuzione della pipeline.
La pipeline YAML può contenere più pianificazioni cron ed è possibile che la pipeline esegua fasi o processi diversi in base alla pianificazione cron eseguita. Ad esempio, si dispone di una compilazione notturna e di una compilazione settimanale e si vuole eseguire una determinata fase solo durante la compilazione notturna. È possibile usare la variabile Build.CronSchedule.DisplayName
in una condizione di processo o fase per determinare se eseguire il processo o la 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')
Per altri esempi, vedere la sezione seguente esempi.
Esempi
Nell'esempio seguente vengono definite due pianificazioni.
La prima pianificazione, compilazione giornaliera di mezzanotte, esegue una pipeline a mezzanotte ogni giorno solo se il codice è stato modificato dopo l'ultima esecuzione pianificata completata.
Esegue la pipeline per main
e tutti i rami releases/*
, ad eccezione di quelli in releases/ancient/*
.
La seconda pianificazione, compilazione settimanale domenica, esegue una pipeline a mezzogiorno di domenica per tutti i rami releases/*
.
In questo modo, indipendentemente dal fatto che il codice sia stato modificato dall'ultima esecuzione.
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
Per eseguire in modo condizionale una fase o un processo in base al fatto che sia stato pianificato da un trigger pianificato, usare la variabile Build.CronSchedule.DisplayName
in una condizione. In questo esempio, stage1
viene eseguito solo se la pipeline è stata attivata dalla pianificazione Daily midnight build
e job3
viene eseguita solo se la pipeline è stata attivata dalla pianificazione Weekly Sunday build
.
stages:
- 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')
jobs:
- job: job1
steps:
- script: echo Hello from Stage 1 Job 1
- stage: stage2
dependsOn: [] # Indicate this stage does not depend on the previous stage
jobs:
- job: job2
steps:
- script: echo Hello from Stage 2 Job 2
- job: job3
# Run this job only when the pipeline is triggered by the
# "Weekly Sunday build" cron schedule
condition: eq(variables['Build.CronSchedule.DisplayName'], 'Weekly Sunday build')
steps:
- script: echo Hello from Stage 2 Job 3