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 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.
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.
opcjonalną przyjazną nazwę nadaną określonemu harmonogramowi.
branches
includeExcludeFilters.
nazwy gałęzi do uwzględnienia lub wykluczenia w celu wyzwolenia przebiegu.
batch
wartość logiczna.
właściwość batch
określa, czy należy uruchomić potok, jeśli wcześniej zaplanowane uruchomienie jest w toku. Jeśli batch
jest true
, nowe uruchomienie potoku nie zostanie uruchomione z powodu harmonogramu, jeśli poprzednie uruchomienie potoku jest nadal w toku. Wartość domyślna to false
.
Na właściwość batch
wpływa ustawienie właściwości always
. Gdy always
jest true
, potok jest uruchamiany zgodnie z harmonogramem cron, nawet jeśli batch
jest true
i jest uruchomiony w toku.
Zawsze | Porcja | Zachowanie |
---|---|---|
false |
false |
Potok jest uruchamiany tylko wtedy, gdy istnieje zmiana w odniesieniu do ostatniego pomyślnego zaplanowanego uruchomienia potoku. |
false |
true |
Potok jest uruchamiany tylko wtedy, gdy istnieje zmiana w odniesieniu do ostatniego pomyślnego zaplanowanego uruchomienia potoku i nie ma zaplanowanego uruchomienia potoku w toku. |
true |
false |
Potok działa zgodnie z harmonogramem cron. |
true |
true |
Przebiegi potoku zgodnie z harmonogramem cron, nawet jeśli istnieje przebieg w toku. |
always
wartość logiczna.
, czy zawsze uruchamiać potok, czy tylko wtedy, gdy od ostatniego zaplanowanego uruchomienia nastąpiły zmiany kodu źródłowego; wartość domyślna to false.
Uwagi
Jeśli nie określisz zaplanowanego wyzwalacza, nie wystąpią zaplanowane kompilacje.
Uwaga
Jeśli określisz klauzulę exclude
bez klauzuli include
dla branches
, jest to równoważne 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 potok YAML ma 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 wykonać wypychanie w celu rozpoczęcia oceny zaplanowanych wyzwalaczy YAML.
Aby usunąć zaplanowane wyzwalacze UI z potoku YAML, zobacz ustawienia UI zastępują zaplanowane wyzwalacze YAML.
Build.CronSchedule.DisplayName, zmienna
Gdy potok jest uruchomiony z powodu zaplanowanego wyzwalacza cron, wstępnie zdefiniowana zmienna Build.CronSchedule.DisplayName
zawiera displayName
harmonogramu 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, kompilacji Daily midnight, uruchamia potok o północy codziennie tylko wtedy, gdy kod zmienił się od czasu ostatniego zaplanowanego uruchomienia.
Uruchamia potok dla main
i wszystkich gałęzi releases/*
, z wyjątkiem tych gałęzi w releases/ancient/*
.
Drugi harmonogram, Cotygodniowa niedziela 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 stage1
działa tylko wtedy, gdy potok został wyzwolony zgodnie z harmonogramem Daily midnight build
, a job3
działa tylko wtedy, gdy potok został wyzwolony przez harmonogram 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ż
- Dowiedz się więcej o zaplanowanych wyzwalaczy.
- Dowiedz się więcej na temat wyzwalaczy ogólnie i sposobu ich określania.