Partilhar via


schedules.cron definition

Um acionador agendado especifica uma agenda em que ramos 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 referenciam esta definição: agendas

Propriedades

cron cadeia. Necessário como primeira propriedade.
Sintaxe cron que define uma agenda na hora UTC.

displayName cadeia.
Nome amigável opcional atribuído a uma agenda específica.

branchesincludeExcludeFilters.
Nomes de ramo a incluir ou excluir para acionar uma execução.

batchbooleano.
Se pretende executar o pipeline se a execução agendada anteriormente estiver em curso; a predefinição é false. Isto é independentemente da versão do repositório do pipeline.

A tabela seguinte descreve como always e batch interage.

Sempre Batch Comportamento
false false O pipeline só é executado se existir uma alteração relativamente à última execução de pipeline agendada com êxito.
false true O pipeline só é executado se existir uma alteração relativamente à última execução de pipeline agendada com êxito e não existir nenhuma execução de pipeline agendada em curso.
true false O pipeline é executado de acordo com a agenda cron.
true true O pipeline é executado de acordo com a agenda cron.

Importante

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

alwaysbooleano.
Quer seja sempre executado o pipeline ou apenas se tiver havido alterações ao código fonte desde a última execução agendada com êxito; a predefinição é falsa.

Observações

Se não especificar nenhum acionador agendado, não ocorrerão compilações agendadas.

Nota

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

Importante

Os acionadores agendados definidos com a IU das definições do pipeline têm precedência sobre os acionadores agendados do YAML.

Se o pipeline do YAML tiver acionadores agendados do YAML e acionadores agendados definidos da IU, apenas estes últimos serão executados. Para executar os acionadores agendados definidos do YAML no pipeline do YAML, deve remover os acionadores agendados definidos na IU das definições do pipeline. Assim que todos os acionadores agendados da IU forem removidos, tem de ser feito um push para que os acionadores agendados do YAML comecem a ser avaliados.

Para eliminar acionadores agendados de IU de um pipeline YAML, veja Definições de IU sobrepor acionadores agendados do YAML.

Variável Build.CronSchedule.DisplayName

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

O pipeline YAML pode conter várias agendas cron e poderá querer que o pipeline execute diferentes fases ou tarefas com base nas execuções de agendamento cron. Por exemplo, tem uma compilação noturna e uma compilação semanal e quer executar uma determinada fase apenas durante a compilação noturna. Pode utilizar a Build.CronSchedule.DisplayName variável numa condição de tarefa ou fase para determinar se deve executar essa tarefa ou fase.

- 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, veja a secção Exemplos seguinte.

Exemplos

O exemplo seguinte define duas agendas.

A primeira agenda, compilação diária da meia-noite, executa um pipeline à meia-noite todos os dias apenas se o código tiver sido alterado desde a última execução agendada com êxito. Executa o pipeline para main e todos os releases/* ramos, exceto os ramos em releases/ancient/*.

A segunda agenda, compilação semanal de domingo, executa um pipeline ao meio-dia aos domingos para todos os releases/* ramos. Fá-lo 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 uma fase ou tarefa com base no facto de ter sido agendada por um acionador agendado, utilize a Build.CronSchedule.DisplayName variável numa condição. Neste exemplo, stage1 só é executado se o pipeline tiver sido acionado pela Daily midnight build agenda e job3 apenas for executado se o pipeline tiver sido acionado pela Weekly Sunday build agenda.

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