Определение schedules.cron
Запланированный триггер указывает расписание, на основе которого создаются ветви.
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.
Определения, ссылающиеся на это определение: расписания
Свойства
cron
Строка. Требуется в качестве первого свойства.
Синтаксис Cron, определяющий расписание в формате UTC.
displayName
Строка.
Необязательное понятное имя, присвоенное определенному расписанию.
branches
includeExcludeFilters.
Имена ветвей, включаемые или исключаемые для запуска запуска.
batch
логическое значение.
Следует ли запускать конвейер, если выполняется ранее запланированное выполнение; Значение по умолчанию — false
. Это не зависит от версии репозитория конвейера.
В следующей таблице описано, как always
и batch
как взаимодействовать.
Всегда | Пакетная служба | Поведение |
---|---|---|
false |
false |
Конвейер выполняется только при изменении последнего успешного запланированного запуска конвейера. |
false |
true |
Конвейер выполняется только в том случае, если в отношении последнего успешного запланированного запуска конвейера произошло изменение, а запланированное выполнение конвейера отсутствует. |
true |
false |
Конвейер выполняется в соответствии с расписанием cron. |
true |
true |
Конвейер выполняется в соответствии с расписанием cron. |
Важно!
Если always
имеет значение true
, конвейер выполняется по расписанию cron, даже если batch
имеет значение true
.
always
логическое значение.
Следует ли всегда запускать конвейер или только в том случае, если с момента последнего успешного запланированного запуска были изменены исходный код; Значение по умолчанию — false.
Комментарии
Если не указан запланированный триггер, запланированные сборки не выполняются.
Примечание
Если указать предложение без include
предложения для branches
, это эквивалентно указанию *
в предложении include
.exclude
Важно!
Запланированные триггеры, определенные с помощью пользовательского интерфейса параметров конвейера, имеют приоритет над запланированными триггерами YAML.
Если конвейер YAML содержит как триггеры по расписанию YAML, так и триггеры по расписанию, определенные в пользовательском интерфейсе, то выполняются только триггеры по расписанию, определенные в пользовательском интерфейсе. Чтобы запустить определенные в YAML триггеры по расписанию в конвейере YAML, необходимо удалить триггеры по расписанию, определенные в пользовательском интерфейсе параметров конвейера. После удаления всех запланированных триггеров пользовательского интерфейса необходимо выполнить отправку, чтобы начать оценку запланированных триггеров YAML.
Сведения об удалении запланированных триггеров пользовательского интерфейса из конвейера YAML см. в статье Параметры пользовательского интерфейса переопределяют запланированные триггеры YAML.
Переменная Build.CronSchedule.DisplayName
Когда конвейер выполняется из-за запланированного триггера cron, предопределенная Build.CronSchedule.DisplayName
переменная содержит displayName
расписание cron, которое активировало выполнение конвейера.
Конвейер YAML может содержать несколько расписаний cron, и может потребоваться, чтобы конвейер выполнял различные этапы или задания, в зависимости от которых выполняется расписание cron. Например, у вас есть ночная сборка и еженедельная сборка, и вы хотите запустить определенный этап только во время ночной сборки. Можно использовать переменную в условии Build.CronSchedule.DisplayName
задания или этапа, чтобы определить, следует ли выполнять это задание или этап.
- 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')
Дополнительные примеры см. в следующем разделе Примеры .
Примеры
В следующем примере определяются два расписания.
Первое расписание, Ежедневная полночь сборки, запускает конвейер в полночь каждый день только в том случае, если код изменился с момента последнего успешного запланированного выполнения.
Он запускает конвейер для main
и всех releases/*
ветвей, за исключением этих ветвей в releases/ancient/*
.
Во втором расписании, еженедельно по воскресеньям, конвейер запускается в полдень по воскресеньям для всех releases/*
ветвей.
Это делается независимо от того, изменился ли код с момента последнего выполнения.
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
Для условного запуска этапа или задания в зависимости от того, было ли запланировано запланированное выполнение триггера, используйте Build.CronSchedule.DisplayName
переменную в условии. В этом примере выполняется только в том случае, stage1
если конвейер был активирован расписанием Daily midnight build
, и job3
только в том случае, если конвейер был активирован расписанием 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
См. также раздел
- Дополнительные сведения о запланированных триггерах.
- Узнайте больше о триггерах в целом и о том, как их указать.