Compartilhar via


definição schedules.cron

Um gatilho agendado especifica um agendamento no 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 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.

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

Propriedades

cron String. Obrigatório como primeira propriedade.
Sintaxe cron definindo um agendamento no horário UTC.

displayName String.
Nome amigável opcional fornecido a uma agenda específica.

branchesincludeExcludeFilters.
Nomes de branch a serem incluídos ou excluídos para disparar uma execução.

batchbooliano.
Se o pipeline deve ser executado se a execução agendada anteriormente estiver em andamento; o padrão é false. Isso ocorrerá independentemente da versão do repositório de pipeline.

A tabela a seguir descreve como always e batch interagem.

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.

Importante

Quando always é , o pipeline é trueexecutado de acordo com o agendamento cron, mesmo quando batch é true.

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

Comentários

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

Observação

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

Importante

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

Se o pipeline YAML tiver gatilhos de agendamentos YAML e gatilhos de agendamentos definidos pela interface do usuário, apenas os gatilhos de agendamentos 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 YAML comecem a ser avaliados.

Para excluir gatilhos agendados da interface do usuário de um pipeline YAML, confira As 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 predefinida Build.CronSchedule.DisplayName 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 em quais agendamentos cron são executados. 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 Build.CronSchedule.DisplayName variável em uma condição de trabalho ou estágio para determinar se deve executar esse trabalho ou estágio.

- 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 a seguir.

Exemplos

O exemplo a seguir define dois agendamentos.

O primeiro agendamento, build diário à 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 todos os branches releases/*, exceto para esses branches em releases/ancient/*.

O segundo cronograma, build semanal aos domingos, executa um pipeline ao meio-dia nos domingos para todos branches 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 Build.CronSchedule.DisplayName variável em uma condição. Neste exemplo, stage1 só será executado se o pipeline tiver sido disparado pelo Daily midnight build agendamento e job3 só for executado se o pipeline tiver sido disparado pelo Weekly Sunday build agendamento.

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

Confira também