Compartilhar via


definição schedules.cron

Um gatilho agendado especifica uma agenda na qual os branches são criados.

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.

Definições que fazem referência a essa definição: agendas

Propriedades

cron cadeia de caracteres. Obrigatório como primeira propriedade.
sintaxe Cron definindo um agendamento no horário UTC.

displayName cadeia de caracteres.
nome amigável opcional fornecido a uma agenda específica.

branches includeExcludeFilters.
nomes de branch a serem incluídos ou excluídos para disparar uma execução.

batch booliano.
a propriedade batch configura se o pipeline deve ser executado se a execução agendada anteriormente estiver em andamento. Quando batch for true, uma nova execução de pipeline não será iniciada devido ao agendamento se uma execução de pipeline anterior ainda estiver em andamento. O padrão é false.

A propriedade batch é afetada pela configuração da propriedade always. Quando always é true, o pipeline é executado de acordo com o agendamento cron, mesmo quando batch é true e há uma execução em andamento.

Sempre Lote Comportamento
false false O pipeline será executado somente se houver uma alteração em relação à última execução de pipeline agendada bem-sucedida.
false true O pipeline será executado somente se houver uma alteração em relação à última execução de pipeline agendada bem-sucedida e não houver nenhuma execução de pipeline agendada em andamento.
true false O pipeline é executado de acordo com o agendamento cron.
true true O pipeline é executado de acordo com o agendamento cron mesmo se houver uma execução em andamento.

always booliano.
Se o pipeline deve ser executado ou somente se houve alterações no código-fonte desde a última execução agendada bem-sucedida; o padrão é false.

Observações

Se você não especificar nenhum gatilho agendado, nenhum build agendado ocorrerá.

Observação

Se você especificar uma cláusula exclude sem uma cláusula include para branches, será equivalente a especificar * na cláusula include.

Importante

Gatilhos agendados definidos usando as configurações de pipeline da interface do usuário têm precedência sobre gatilhos agendados do YAML.

Se o pipeline yaml tiver gatilhos agendados yaml e gatilhos agendados definidos pela interface do usuário, somente os gatilhos agendados definidos pela interface do usuário serão executados. Para executar os gatilhos agendados definidos pelo YAML em seu pipeline YAML, você deve remover os gatilhos agendados definidos na interface do usuário das configurações do pipeline. Depois que todos os gatilhos agendados da interface do usuário forem removidos, um push deverá ser feito para que os gatilhos agendados do YAML comecem a ser avaliados.

Para excluir gatilhos agendados da interface do usuário de um pipeline YAML, consulte configurações da interface do usuário substituem os gatilhos agendados do YAML.

Variável Build.CronSchedule.DisplayName

Quando um pipeline está em execução devido a um gatilho agendado cron, a variável de Build.CronSchedule.DisplayName predefinida contém o displayName do agendamento cron que disparou a execução do pipeline.

Seu pipeline yaml pode conter vários agendamentos cron e talvez você queira que seu pipeline execute diferentes estágios ou trabalhos com base no qual o agendamento cron é executado. Por exemplo, você tem um build noturno e um build semanal e deseja executar um determinado estágio somente durante a compilação noturna. Você pode usar a variável Build.CronSchedule.DisplayName em um trabalho ou condição de estágio para determinar se esse trabalho ou estágio deve ser executado.

- 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')

Para obter mais exemplos, consulte a seção exemplos de a seguir.

Exemplos

O exemplo a seguir define dois agendamentos.

O primeiro agendamento, diária de build da meia-noite, executa um pipeline à meia-noite todos os dias somente se o código tiver sido alterado desde a última execução agendada bem-sucedida. Ele executa o pipeline para main e todas as ramificações releases/*, exceto para essas ramificações em releases/ancient/*.

A segunda agenda, de build de domingo semanal, executa um pipeline ao meio-dia aos domingos para todas as filiais releases/*. Ele faz isso independentemente de o código ter sido alterado desde a última execução.

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

Para executar condicionalmente um estágio ou trabalho com base em se ele foi agendado por um gatilho agendado, use a variável Build.CronSchedule.DisplayName em uma condição. Neste exemplo, stage1 só será executado se o pipeline tiver sido disparado pelo agendamento Daily midnight build e job3 só será executado se o pipeline tiver sido disparado pelo agendamento 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

Consulte também