schedules.cron definition

Ein geplanter Trigger gibt einen Zeitplan an, auf dem Branches erstellt werden.

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.

Definitionen, die auf diese Definition verweisen: Zeitpläne

Eigenschaften

cron Schnur. Erforderlich als erste Eigenschaft.
Cronsyntax, die einen Zeitplan in UTC-Zeit definiert.

displayName Schnur.
Optionaler Anzeigename, der einem bestimmten Zeitplan zugewiesen wird.

branchesincludeExcludeFilters.
Branchnamen, die zum Auslösen einer Ausführung eingeschlossen oder ausgeschlossen werden sollen.

batchBoolesch.
Gibt an, ob die Pipeline ausgeführt werden soll, wenn die zuvor geplante Ausführung ausgeführt wird; der Standardwert ist false. Dies ist unabhängig von der Version des Pipelinerepositorys.

In der folgenden Tabelle wird beschrieben, wie und wie always sie batch interagieren.

Immer Batch Verhalten
false false Die Pipeline wird nur ausgeführt, wenn es eine Änderung in Bezug auf die letzte erfolgreiche geplante Pipelineausführung gibt.
false true Die Pipeline wird nur ausgeführt, wenn es eine Änderung in Bezug auf die letzte erfolgreiche geplante Pipelineausführung gibt und keine geplante Pipelineausführung ausgeführt wird.
true false Die Pipeline wird gemäß dem Cron-Zeitplan ausgeführt.
true true Die Pipeline wird gemäß dem Cron-Zeitplan ausgeführt.

Wichtig

Wenn always ist, wird truedie Pipeline gemäß dem Cron-Zeitplan ausgeführt, auch wenn truebatch ist.

alwaysBoolesch.
Gibt an, ob die Pipeline immer oder nur ausgeführt werden soll, wenn seit der letzten erfolgreichen geplanten Ausführung Quellcodeänderungen vorgenommen wurden; der Standardwert ist false.

Bemerkungen

Wenn Sie keinen geplanten Trigger angeben, werden keine geplanten Builds durchgeführt.

Hinweis

Wenn Sie eine exclude-Klausel ohne eine include-Klausel für branches angeben, ist dies gleichbedeutend mit der Angabe von * in der include-Klausel.

Wichtig

Plantrigger, die über die Benutzeroberfläche für Pipelineeinstellungen definiert werden, haben Vorrang vor YAML-Plantriggern.

Wenn Ihre YAML-Pipeline sowohl über geplante YAML-Trigger als auch über in der Benutzeroberfläche definierte geplante Trigger verfügt, werden nur die in der Benutzeroberfläche definierten geplanten Trigger ausgeführt. Um die von YAML definierten geplanten Trigger in Ihrer YAML-Pipeline auszuführen, müssen Sie die geplanten Trigger entfernen, die in der Benutzeroberfläche für die Pipelineeinstellungen definiert sind. Nachdem alle auf der Benutzerfläche definierten Plantrigger entfernt wurden, muss ein Push erfolgen, damit die zu startenden YAML-Plantrigger überprüft werden können.

Informationen zum Löschen von auf der Benutzeroberfläche definierten Plantriggern aus einer YAML-Pipeline finden Sie unter Überschreiben von YAML-Plantriggern durch Benutzeroberflächeneinstellungen.

Build.CronSchedule.DisplayName-Variable

Wenn eine Pipeline aufgrund eines geplanten Cron-Triggers ausgeführt wird, enthält die vordefinierte Variable den displayName des Cron-ZeitplansBuild.CronSchedule.DisplayName, der die Pipelineausführung ausgelöst hat.

Ihre YAML-Pipeline kann mehrere Cron-Zeitpläne enthalten, und Sie möchten möglicherweise, dass Ihre Pipeline unterschiedliche Phasen oder Aufträge ausführt, basierend auf dem cron-Zeitplan. Beispielsweise verfügen Sie über einen nächtlichen Build und einen wöchentlichen Build, und Sie möchten eine bestimmte Phase nur während des nächtlichen Builds ausführen. Sie können die Build.CronSchedule.DisplayName Variable in einer Auftrags- oder Phasenbedingung verwenden, um zu bestimmen, ob dieser Auftrag oder diese Phase ausgeführt werden soll.

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

Weitere Beispiele finden Sie im folgenden Abschnitt Beispiele .

Beispiele

Im folgenden Beispiel werden zwei Zeitpläne definiert.

Der erste Zeitplan, Daily midnight build, führt täglich um Mitternacht nur dann eine Pipeline aus, wenn sich der Code seit der letzten erfolgreichen geplanten Ausführung geändert hat. Er führt die Pipeline für main und alle releases/*-Branches aus, mit Ausnahme dieser Branches unter releases/ancient/*.

Der zweite Zeitplan, Weekly Sunday build, führt sonntags mittags eine Pipeline für alle releases/*-Branches aus. Dies geschieht unabhängig davon, ob sich der Code seit der letzten Ausführung geändert hat.

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

Verwenden Sie die Build.CronSchedule.DisplayName Variable in einer Bedingung, um eine Phase oder einen Auftrag abhängig davon auszuführen, ob sie von einem geplanten Trigger geplant wurde. In diesem Beispiel wird nur ausgeführt, stage1 wenn die Pipeline durch den Daily midnight build Zeitplan ausgelöst wurde, und job3 wird nur ausgeführt, wenn die Pipeline durch den Weekly Sunday build Zeitplan ausgelöst wurde.

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

Siehe auch