Udostępnij za pośrednictwem


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.

Definicje odwołujące się do tej definicji: harmonogramy

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ż