Определение 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 Строка.
Необязательное понятное имя, присвоенное определенному расписанию.

branchesincludeExcludeFilters.
Имена ветвей, включаемые или исключаемые для запуска запуска.

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

См. также раздел