Dela via


schedules.cron-definition

En schemalagd utlösare anger ett schema för vilka grenar som skapas.

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.

Definitioner som refererar till den här definitionen: scheman

Egenskaper

cron sträng. Krävs som första egenskap.
Cron-syntax som definierar ett schema i UTC-tid.

displayName sträng.
Valfritt eget namn som ges till ett specifikt schema.

branches includeExcludeFilters.
Grennamn som ska inkluderas eller exkluderas för att utlösa en körning.

batch boolesk.
Egenskapen batch konfigurerar om pipelinen ska köras om den tidigare schemalagda körningen pågår. När batch är truestartar inte en ny pipelinekörning på grund av schemat om en tidigare pipelinekörning fortfarande pågår. Standardvärdet är false.

Egenskapen batch påverkas av inställningen för egenskapen always. När always är truekörs pipelinen enligt cron-schemat, även när batch är true och en pågående körning pågår.

Alltid Omgång Uppförande
false false Pipeline körs endast om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen.
false true Pipeline körs endast om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen och det inte finns någon pågående schemalagd pipelinekörning.
true false Pipeline körs enligt cron-schemat.
true true Pipeline körs enligt cron-schemat även om det pågår en pågående körning.

always boolesk.
Om du alltid ska köra pipelinen eller bara om det har skett källkodsändringar sedan den senaste lyckade schemalagda körningen. standardvärdet är false.

Anmärkningar

Om du inte anger någon schemalagd utlösare sker inga schemalagda versioner.

Anmärkning

Om du anger en exclude-sats utan en include-sats för branchesmotsvarar det att ange * i include-satsen.

Viktigt!

Schemalagda utlösare som definierats med hjälp av användargränssnittet för pipelineinställningar har företräde framför YAML-schemalagda utlösare.

Om YAML-pipelinen har både YAML-schemalagda utlösare och gränssnittsdefinierade schemalagda utlösare körs endast de gränssnittsdefinierade schemalagda utlösarna. Om du vill köra de YAML-definierade schemalagda utlösarna i YAML-pipelinen måste du ta bort de schemalagda utlösare som definierats i användargränssnittet för pipelineinställningar. När alla schemalagda utlösare för användargränssnittet har tagits bort måste en push göras för att de SCHEMALAGDa YAML-utlösarna ska börja utvärderas.

För att ta bort UI-schemalagda utlösare från en YAML-pipeline, se UI-inställningar åsidosätter schemalagda YAML-utlösare.

Variabeln Build.CronSchedule.DisplayName

När en pipeline körs på grund av en schemalagd cron-utlösare innehåller den fördefinierade Build.CronSchedule.DisplayName variabeln displayName för cron-schemat som utlöste pipelinekörningen.

YAML-pipelinen kan innehålla flera cron-scheman och du kanske vill att din pipeline ska köra olika steg eller jobb baserat på vilket cron-schema som körs. Du har till exempel ett nattligt bygge och en veckoversion, och du vill bara köra en viss fas under det nattliga bygget. Du kan använda variabeln Build.CronSchedule.DisplayName i ett jobb- eller fasvillkor för att avgöra om jobbet eller fasen ska köras.

- 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')

Fler exempel finns i följande avsnitt Exempel.

Exempel

I följande exempel definieras två scheman.

Det första schemat, Daily midnight build, kör en pipeline vid midnatt varje dag endast om koden har ändrats sedan den senaste lyckade schemalagda körningen. Den kör pipelinen för main och alla releases/* grenar, förutom grenarna under releases/ancient/*.

Det andra schemat, Weekly Sunday build, kör en pipeline kl. 12.00 på söndagar för alla releases/* grenar. Det gör det oavsett om koden har ändrats sedan den senaste körningen.

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

Om du vill köra ett steg eller jobb villkorligt baserat på om det schemalagts av en schemalagd utlösare använder du variabeln Build.CronSchedule.DisplayName i ett villkor. I det här exemplet körs stage1 bara om pipelinen utlöstes av Daily midnight build-schemat och job3 endast körs om pipelinen utlöstes av Weekly Sunday build-schemat.

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

Se även