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 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 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.

branchesincludeExcludeFilters.
Nomi di ramo da includere o escludere per l'attivazione di un'esecuzione.

batchbooleano.
Indica se eseguire la pipeline se l'esecuzione pianificata in precedenza è in corso; il valore predefinito è false. Questo avviene indipendentemente dalla versione del repository della pipeline.

Nella tabella seguente viene descritto come always e batch interagire.

Always Batch Comportamento
false false La pipeline viene eseguita solo se è presente una modifica rispetto all'ultima esecuzione pianificata della pipeline pianificata.
false true La pipeline viene eseguita solo se è presente una modifica rispetto all'ultima esecuzione pianificata della pipeline pianificata e non è in corso alcuna esecuzione pianificata della pipeline.
true false Le esecuzioni della pipeline vengono eseguite in base alla pianificazione cron.
true true Le esecuzioni della pipeline vengono eseguite in base alla pianificazione cron.

Importante

Quando always è true, la pipeline viene eseguita in base alla pianificazione cron, anche quando batch è true.

alwaysbooleano.
Se eseguire sempre la pipeline o solo se sono state apportate modifiche al codice sorgente dall'ultima esecuzione pianificata riuscita; il valore predefinito è false.

Commenti

Se non si specifica alcun trigger pianificato, non vengono eseguite compilazioni pianificate.

Nota

Se si specifica una exclude clausola senza clausola include per branches, equivale a specificare * nella include clausola .

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 che eseguono l'override dei trigger pianificati YAML.

Variabile Build.CronSchedule.DisplayName

Quando una pipeline è in esecuzione a causa di un trigger pianificato cron, la variabile predefinita Build.CronSchedule.DisplayName contiene l'oggetto 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 Build.CronSchedule.DisplayName variabile in una condizione di processo o fase per determinare se eseguire tale processo 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')

Per altri esempi, vedere la sezione Esempi seguente.

Esempio

Nell'esempio seguente vengono definite due pianificazioni.

La prima pianificazione, compilazione giornaliera mezzanotte, esegue una pipeline a mezzanotte ogni giorno solo se il codice è stato modificato dopo l'ultima esecuzione pianificata. Esegue la pipeline per main e tutti i releases/* rami, ad eccezione di tali rami in releases/ancient/*.

La seconda pianificazione, la build settimanale domenica, esegue una pipeline alle ore di mezzogiorno di domenica per tutti i releases/* rami. 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 Build.CronSchedule.DisplayName variabile in una condizione. In questo esempio viene stage1 eseguito solo se la pipeline è stata attivata dalla Daily midnight build pianificazione e job3 viene eseguita solo se la pipeline è stata attivata dalla Weekly Sunday build pianificazione.

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

Vedi anche