Поделиться через


Определение 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 настраивает, следует ли запускать конвейер, если ранее запланированное выполнение выполняется. Если batchtrue, новый запуск конвейера не начнется по расписанию, если предыдущий запуск всё ещё выполняется. Значение по умолчанию — false.

Свойство batch зависит от параметра свойства always. Если alwaystrue, запуск производится в соответствии с расписанием cron, даже когда batchtrue и запущен процесс.

Всегда Партия Поведение
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

См. также

  • Дополнительные сведения о запланированных триггерах .
  • Дополнительные сведения о триггерах в целом и их указании.