Partilhar via


Definição de schedules.cron

Um gatilho agendado especifica uma agenda na qual as ramificações são criadas.

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 esta definição: tabelas

Propriedades

cron string. Obrigatório como primeira propriedade.
sintaxe Cron definindo uma programação no horário UTC.

displayName string.
Nome amigável opcional dado a um horário específico.

branches includeExcludeFilters.
Nomes de ramificações a serem incluídos ou excluídos para acionar uma execução.

batch booleano.
A propriedade batch configura se o pipeline deve ser executado se a execução agendada anteriormente estiver em andamento. Quando batch estiver true, uma nova execução de pipeline não será iniciada devido ao cronograma se uma execução de pipeline anterior ainda estiver em andamento. A predefinição é false.

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

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

always booleano.
Se deve sempre executar o pipeline 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ê especificar nenhum gatilho agendado, nenhuma compilação agendada ocorrerá.

Observação

Se você especificar uma cláusula exclude sem uma cláusula include para branches, isso equivale 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 os gatilhos agendados YAML.

Se o pipeline do YAML tiver gatilhos agendados do 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 no pipeline do YAML, você deve remover os gatilhos agendados definidos na interface do usuário de configurações do pipeline. Depois que todos os gatilhos agendados da interface do usuário forem removidos, um push deve 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 do YAML, consulte 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 cron agendado, a variável Build.CronSchedule.DisplayName predefinida contém o displayName do agendamento cron que disparou a execução do pipeline.

Seu pipeline YAML pode conter várias agendas cron, e você pode querer que seu pipeline execute diferentes estágios ou trabalhos com base em quais cron schedule é executado. Por exemplo, você tem uma compilação noturna e uma compilação semanal, e deseja executar um determinado estágio apenas durante a compilação noturna. Você pode usar a variável Build.CronSchedule.DisplayName em uma condição de trabalho ou 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 a seguir.

Exemplos

O exemplo a seguir define duas agendas.

A primeira agenda, de compilação diária à meia-noite, executa um pipeline à meia-noite todos os dias apenas se o código tiver sido alterado desde a última execução agendada bem-sucedida. Ele executa o gasoduto para main e todos os ramos releases/*, exceto para os ramos sob releases/ancient/*.

O segundo horário, Weekly Sunday build, opera um gasoduto ao meio-dia aos domingos para todos os releases/* ramos. 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 no fato de ter sido agendado por um gatilho agendado, use a variável Build.CronSchedule.DisplayName em uma condição. Neste exemplo, stage1 só é executado se o pipeline foi acionado pelo agendamento Daily midnight build e job3 só é executado se o pipeline foi acionado 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

Ver também