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

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

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

batchbooleskt värde.
Om pipelinen ska köras om den tidigare schemalagda körningen pågår. standardvärdet är false. Det här gäller oavsett vilken version av pipelinelagringsplatsen som används.

I följande tabell beskrivs hur always och batch interagerar.

Alltid Batch Beteende
false false Pipelinen körs bara om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen.
false true Pipelinen körs bara om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen och det inte pågår någon schemalagd pipelinekörning.
true false Pipelinen körs enligt cron-schemat.
true true Pipelinen körs enligt cron-schemat.

Viktigt

När always är truekörs pipelinen enligt cron-schemat, även när batch är true.

alwaysbooleskt värde.
Om du alltid ska köra pipelinen eller bara om källkoden har ändrats sedan den senaste lyckade schemalagda körningen. standardvärdet är false.

Kommentarer

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

Anteckning

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 gränssnittet för pipelineinställningar har företräde framför YAML-schemalagda utlösare.

Om din YAML-pipeline har både schemalagd YAML 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 YAML-schemalagda utlösarna ska börja utvärderas.

Information om hur du tar bort schemalagda utlösare för användargränssnittet från en YAML-pipeline finns i UI-inställningar åsidosätter schemalagda YAML-utlösare.

Variabeln Build.CronSchedule.DisplayName

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

Din YAML-pipeline kan innehålla flera cron-scheman och du kanske vill att din pipeline ska köra olika faser eller jobb baserat på vilka Cron-scheman som körs. Du kan till exempel ha en nattlig version och en veckovis version, och du vill bara köra en viss fas under den nattliga versionen. 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 exempelavsnitt.

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 dessa grenar 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 den 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 stage1 körs 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