Определение 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 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.
Определения, ссылающиеся на это определение: расписания
Свойства
строка cron
. Обязательный в качестве первого свойства.
синтаксис Cron, определяющий расписание в формате UTC.
строка displayName
.
понятное имя, заданное определенному расписанию.
branches
includeExcludeFilters.
Имена ветвей для включения или исключения для активации выполнения.
batch
логические.
Свойство batch
настраивает, следует ли запускать конвейер, если ранее запланированное выполнение выполняется. Если batch
true
, новый запуск конвейера не начнется по расписанию, если предыдущий запуск всё ещё выполняется. Значение по умолчанию — false
.
Свойство batch
зависит от параметра свойства always
. Если always
true
, запуск производится в соответствии с расписанием cron, даже когда batch
true
и запущен процесс.
Всегда | Партия | Поведение |
---|---|---|
false |
false |
Конвейер выполняется только в том случае, если произошло изменение относительно последнего успешного запланированного выполнения конвейера. |
false |
true |
Конвейер выполняется только в том случае, если происходит изменение относительно последнего успешного запланированного выполнения конвейера, и не выполняется запланированное выполнение конвейера. |
true |
false |
Пайплайн выполняется в соответствии с расписанием cron. |
true |
true |
Конвейер проводится в соответствии с расписанием cron, даже если запуск в процессе. |
always
логические.
, следует ли всегда запускать конвейер или только в том случае, если с момента последнего успешного запланированного выполнения произошли изменения исходного кода; Значение по умолчанию — false.
Замечания
Если вы не указали запланированный триггер, запланированные сборки не выполняются.
Примечание.
Если указать предложение exclude
без предложения include
для branches
, это эквивалентно указанию *
в предложении include
.
Это важно
Запланированные триггеры, определенные с помощью пользовательского интерфейса параметров конвейера, имеют приоритет над запланированными триггерами 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
См. также
- Дополнительные сведения о запланированных триггерах .
- Дополнительные сведения о триггерах в целом и их указании.