definicja schedules.cron

Zaplanowany wyzwalacz określa harmonogram, w którym są tworzone gałęzie.

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.

Definicje odwołujące się do tej definicji: harmonogramy

Właściwości

cron Ciąg. Wymagane jako pierwsza właściwość.
Składnia Cron definiująca harmonogram w czasie UTC.

displayName Ciąg.
Opcjonalna przyjazna nazwa nadana określonemu harmonogramowi.

branchesincludeExcludeFilters.
Nazwy gałęzi do uwzględnienia lub wykluczenia w celu wyzwolenia przebiegu.

batchwartość logiczna.
Czy należy uruchomić potok, jeśli wcześniej zaplanowane uruchomienie jest w toku; wartość domyślna to false. Jest to niezależnie od wersji repozytorium potoków.

W poniższej tabeli opisano sposób always i batch interakcję.

Zawsze Batch Zachowanie
false false Potok jest uruchamiany tylko wtedy, gdy nastąpiła zmiana w odniesieniu do ostatniego pomyślnego zaplanowanego uruchomienia potoku.
false true Potok jest uruchamiany tylko wtedy, gdy nastąpiła zmiana w odniesieniu do ostatniego pomyślnego zaplanowanego uruchomienia potoku i nie ma zaplanowanego uruchomienia potoku w toku.
true false Potok jest uruchamiany zgodnie z harmonogramem cron.
true true Potok jest uruchamiany zgodnie z harmonogramem cron.

Ważne

Gdy always parametr ma truewartość , potok jest uruchamiany zgodnie z harmonogramem cron, nawet jeśli batch ma wartość true.

alwayswartość logiczna.
Czy zawsze uruchamiać potok, czy tylko wtedy, gdy od czasu ostatniego zaplanowanego uruchomienia nastąpiły zmiany kodu źródłowego; wartość domyślna to false.

Uwagi

Jeśli określisz żaden zaplanowany wyzwalacz, nie będą wykonywane żadne zaplanowane kompilacje.

Uwaga

Jeśli określisz klauzulę exclude bez include klauzuli dla branches, jest ona równoważna określeniu * w klauzuli include .

Ważne

Zaplanowane wyzwalacze zdefiniowane przy użyciu interfejsu użytkownika ustawień potoku mają pierwszeństwo przed zaplanowanymi wyzwalaczami YAML.

Jeśli w potoku YAML istnieją zarówno zaplanowane wyzwalacze YAML, jak i zdefiniowane zaplanowane wyzwalacze interfejsu użytkownika, uruchamiane są tylko zdefiniowane zaplanowane wyzwalacze interfejsu użytkownika. Aby uruchomić zdefiniowane zaplanowane wyzwalacze YAML w potoku YAML, należy usunąć zaplanowane wyzwalacze zdefiniowane w interfejsie użytkownika ustawień potoku. Po usunięciu wszystkich zaplanowanych wyzwalaczy interfejsu użytkownika należy wypchnąć, aby wyzwalacze zaplanowane YAML zaczęły być oceniane.

Aby usunąć zaplanowane wyzwalacze interfejsu użytkownika z potoku YAML, zobacz Ustawienia interfejsu użytkownika zastępują zaplanowane wyzwalacze YAML.

Build.CronSchedule.DisplayName, zmienna

Gdy potok jest uruchamiany z powodu zaplanowanego wyzwalacza cron, wstępnie zdefiniowana Build.CronSchedule.DisplayName zmienna zawiera displayName harmonogram cron, który wyzwolił uruchomienie potoku.

Potok YAML może zawierać wiele harmonogramów cron i możesz chcieć, aby potok uruchamiał różne etapy lub zadania na podstawie harmonogramu cron. Na przykład masz nocną kompilację i cotygodniową kompilację i chcesz uruchomić określony etap tylko podczas nocnej kompilacji. Możesz użyć zmiennej Build.CronSchedule.DisplayName w warunku zadania lub etapu, aby określić, czy uruchamiać to zadanie, czy etap.

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

Aby uzyskać więcej przykładów, zobacz następującą sekcję Przykłady .

Przykłady

W poniższym przykładzie zdefiniowano dwa harmonogramy.

Pierwszy harmonogram, kompilacja Daily midnight, uruchamia potok o północy codziennie tylko wtedy, gdy kod zmienił się od czasu ostatniego pomyślnego zaplanowanego uruchomienia. Uruchamia potok dla main wszystkich releases/* gałęzi, z wyjątkiem tych gałęzi w obszarze releases/ancient/*.

Drugi harmonogram, cotygodniowe niedziele kompilacji, uruchamia potok w południe w niedziele dla wszystkich releases/* gałęzi. Robi to niezależnie od tego, czy kod zmienił się od ostatniego uruchomienia.

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

Aby warunkowo uruchomić etap lub zadanie na podstawie tego, czy został on zaplanowany przez zaplanowany wyzwalacz, użyj zmiennej Build.CronSchedule.DisplayName w warunku. W tym przykładzie jest uruchamiany tylko wtedy, stage1 gdy potok został wyzwolony zgodnie z harmonogramem Daily midnight build i job3 jest uruchamiany tylko wtedy, gdy potok został wyzwolony zgodnie z harmonogramem 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

Zobacz też