Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
O Azure Pipelines fornece vários tipos de gatilhos para configurar como o seu pipeline começa.
- Os gatilhos agendados iniciam seu pipeline com base em uma programação, como uma compilação noturna. Este artigo fornece orientação sobre como usar gatilhos agendados para executar os seus pipelines com base em uma agenda.
- Os gatilhos baseados em eventos iniciam o pipeline em resposta a eventos, como a criação de um pull request ou o envio por push para uma ramificação. Para obter informações sobre como usar gatilhos baseados em eventos, consulte Gatilhos no Azure Pipelines.
Você pode combinar gatilhos agendados e baseados em eventos em seus pipelines, por exemplo, para validar a compilação sempre que um push é feito (gatilho CI), quando uma solicitação pull é feita (gatilho PR) e uma compilação noturna (gatilho agendado). Se você quiser criar seu pipeline somente em um cronograma, e não em resposta a gatilhos baseados em eventos, certifique-se de que seu pipeline não tenha nenhum outro gatilho habilitado. Por exemplo, pipelines YAML num repositório do GitHub têm gatilhos de CI e PR ativados por padrão. Para obter informações sobre como desabilitar gatilhos padrão, consulte Gatilhos no Azure Pipelines e navegue até a seção que aborda seu tipo de repositório.
Acionadores agendados
Importante
Os gatilhos agendados definidos usando a interface do usuário de configurações de pipeline do YAML têm precedência sobre os gatilhos agendados do YAML.
Se o pipeline YAML tiver tanto acionadores agendados do YAML como acionadores agendados definidos pela interface de utilizador, apenas os acionadores definidos pela interface de utilizador 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 do YAML. 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 eliminar os gatilhos agendados da interface de utilizador de um pipeline YAML, consulte as definições da interface de utilizador sobrepõem-se aos gatilhos agendados do YAML.
Os gatilhos agendados configuram um pipeline para ser executado em um cronograma definido usando a sintaxe cron.
schedules:
- cron: string # cron syntax defining a schedule
displayName: string # friendly name given to a specific schedule
branches:
include: [ string ] # which branches the schedule applies to
exclude: [ string ] # which branches to exclude from the schedule
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.
batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
# batch is available in Azure DevOps Server 2022.1 and higher
Os fluxos de trabalho programados no YAML têm as seguintes restrições.
- O fuso horário para horários cron é UTC. Você pode obter assistência de IA do GitHub Copilot para criar suas expressões cron.
- Se você especificar uma
excludecláusula sem umaincludecláusula parabranches, isso equivale a especificar*naincludecláusula. - Não é possível usar variáveis de pipeline ao especificar agendas.
- Se você usar modelos em seu arquivo YAML, as agendas devem ser especificadas no arquivo YAML principal e não nos arquivos de modelo.
- Se um pipeline estiver desativado, as atualizações feitas em seu arquivo YAML não atualizarão automaticamente os gatilhos de agendamento.
Considerações de ramificação para gatilhos agendados
Os gatilhos agendados são avaliados para um ramo quando os seguintes eventos ocorrem.
- Uma canalização é criada.
- O arquivo YAML de um pipeline é atualizado, seja por push ou editando-o no editor de pipeline.
- O caminho do arquivo YAML de um pipeline é atualizado para fazer referência a um arquivo YAML diferente. Essa alteração apenas atualiza a ramificação padrão e, portanto, só pega agendas no arquivo YAML atualizado para a ramificação padrão. Se quaisquer outras ramificações mesclarem posteriormente a ramificação padrão, por exemplo
git pull origin main, os gatilhos agendados do arquivo YAML recém-referenciado serão avaliados para essa ramificação. - Uma nova ramificação é criada.
Depois que um desses eventos ocorre em uma ramificação, todas as execuções agendadas para essa ramificação são adicionadas, se essa ramificação corresponder aos filtros de ramificação para os gatilhos agendados contidos no arquivo YAML nessa ramificação.
Importante
As execuções agendadas para uma ramificação são adicionadas somente se a ramificação corresponder aos filtros de ramificação para os gatilhos agendados no arquivo YAML nessa ramificação específica.
Por exemplo, um pipeline é criado com o seguinte programa, e esta versão do arquivo YAML foi registada na ramificação main. Este cronograma constrói o main ramo diariamente.
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
Em seguida, uma nova ramificação é criada com base em main, chamada new-feature. Os gatilhos agendados do arquivo YAML na nova ramificação são lidos e, como não há correspondência para a ramificação new-feature, nenhuma alteração é feita nas compilações agendadas, e a ramificação new-feature não é compilada usando um gatilho agendado.
Se new-feature for adicionado à lista branches e essa alteração for enviada por push para o ramo new-feature, o ficheiro YAML será lido e, como new-feature agora está na lista de ramos, uma compilação agendada será adicionada para o ramo new-feature.
# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- new-feature
Agora, considere que uma ramificação nomeada release é criada com base em main, e em seguida, release é adicionada aos filtros de ramificação no arquivo YAML na ramificação main, mas não na ramificação recém-criada release.
# YAML file in the release branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
# YAML file in the main branch with release added to the branches list
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- release
Como release foi adicionado aos filtros de ramificação na main ramificação, mas não aos filtros de ramificação na release ramificação, a release ramificação não será criada nessa agenda. Somente quando a release ramificação for adicionada aos filtros de ramificação no arquivo YAML na ramificação de liberação a compilação agendada será adicionada ao agendador.
Considerações de processamento em lote para gatilhos agendados
Observação
A batch propriedade está disponível no Azure DevOps Server 2022.1 e superior.
A propriedade batch configura se o pipeline deve executar-se caso a execução agendada anteriormente esteja 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 | Batch | Comportamento |
|---|---|---|
false |
false |
O fluxo de trabalho é executado apenas se houver uma alteração em relação à última execução bem-sucedida do fluxo de trabalho agendado, mesmo que haja uma execução em andamento a partir do último gatilho agendado. |
false |
true |
O pipeline é executado somente se ocorrer uma mudança em relação à última execução agendada e bem-sucedida do pipeline, e se não houver nenhuma execução agendada do pipeline em curso. |
true |
false |
O pipeline é executado de acordo com o horário cron. |
true |
true |
A execução do pipeline ocorre de acordo com o agendamento cron, mesmo se houver uma execução em curso. |
Variável Build.CronSchedule.DisplayName
Observação
A Build.CronSchedule.DisplayName variável está disponível no Azure DevOps Server 2022.1 e superior.
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.
O seu pipeline YAML pode conter vários agendamentos cron, e pode querer que o seu pipeline execute diferentes estágios ou trabalhos baseados no agendamento cron que é 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 exemplos schedules.cron.
Selecione os dias e horários em que deseja executar a compilação usando o editor clássico.
Se seu repositório for Azure Repos Git, GitHub ou Outro Git, você também poderá especificar ramificações para incluir e excluir. Se quiser usar caracteres curinga, digite a especificação da ramificação (por exemplo, features/modules/*) e pressione Enter.
Exemplos
O exemplo a seguir define duas agendas:
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
O primeiro agendamento, Compilação diária à meia-noite, executa um pipeline à meia-noite todos os dias, mas somente se o código tiver sido alterado desde a última execução agendada bem-sucedida, para main e para todas as ramificações em releases/*, exceptuando as ramificações em releases/ancient/*.
O segundo agendamento, Weekly Sunday build, executa um pipeline ao meio-dia aos domingos, quer o código tenha mudado ou não desde a última execução, para todas as releases/* ramificações.
Observação
O fuso horário para agendamentos cron é UTC, portanto, nesses exemplos, as compilações da meia-noite e do meio-dia ocorrem à meia-noite e ao meio-dia no UTC.
Para obter mais exemplos, consulte Migrando do editor clássico.
Exemplo: compilação noturna do repositório Git em vários fusos horários
Neste exemplo, o gatilho programado do editor clássico tem duas entradas, que resultam nas builds a seguir.
De segunda a sexta-feira, às 3:00 da manhã (fuso horário UTC + 5:30), construa ramificações que atendam aos critérios de filtro de ramificação
features/india/*.
Todas as segunda a sexta-feira às 3:00 (hora UTC - 5:00), construir ramificações que atendam aos critérios do filtro da ramificação
features/nc/*.
Exemplo: Construção noturna com diferentes frequências
Neste exemplo, o gatilho agendado do editor clássico tem duas entradas, resultando nas compilações a seguir.
De segunda a sexta-feira às 3:00 AM UTC, construa as ramificações que atendam aos critérios dos filtros de ramificação
mainereleases/*.
Todos os domingos às 3:00 da manhã UTC, construa a ramificação
releases/lastversion, mesmo que a origem ou o pipeline não tenha mudado.
Sintaxe Cron
Cada expressão cron de gatilho agendado do Azure Pipelines é uma expressão delimitada por espaço com cinco entradas na seguinte ordem. A expressão está entre aspas simples '.
mm HH DD MM DW
\ \ \ \ \__ Days of week
\ \ \ \____ Months
\ \ \______ Days
\ \________ Hours
\__________ Minutes
| Campo | Valores aceites |
|---|---|
| Minutos | 0 a 59 |
| Horário | 0 a 23 |
| Dias | 1 a 31 |
| Meses | 1 a 12, nomes completos em inglês, três primeiras letras de nomes em inglês |
| Dias da semana | 0 a 6 (a partir de domingo), nomes completos em inglês, três primeiras letras de nomes em inglês |
Os valores podem estar nos seguintes formatos.
| Formato | Exemplo | Descrição |
|---|---|---|
| Caráter universal | * |
Corresponde a todos os valores para este campo |
| Valor único | 5 |
Especifica um único valor para este campo |
| Delimitado por vírgulas | 3,5,6 |
Especifica vários valores para este campo. Vários formatos podem ser combinados, como 1,3-6 |
| Gamas | 1-3 |
O intervalo inclusivo de valores para este campo |
| Intervalos |
*/4 ou 1-5/2 |
Intervalos a corresponder para este campo, como cada quarto valor ou o intervalo de 1 a 5 com um intervalo de passo de 2 |
| Exemplo | Expressão de Cron |
|---|---|
| Construa todas as segundas, quartas e sextas-feiras às 18:00 |
0 18 * * Mon,Wed,Fri, 0 18 * * 1,3,5 ou 0 18 * * 1-5/2 |
| Construa a cada 6 horas |
0 0,6,12,18 * * *, 0 */6 * * * ou 0 0-18/6 * * * |
| Construa a cada 6 horas a partir das 9h00 |
0 9,15,21 * * * ou 0 9-21/6 * * * |
Para obter mais informações sobre formatos suportados, consulte Expressão Crontab.
Use o GitHub Copilot para criar uma expressão cron
Você pode obter assistência de IA do GitHub Copilot para construir expressões cron ou converter expressões cron existentes do seu fuso horário local para UTC.
As agendas cron do Azure Pipelines são definidas em UTC, portanto, agendas como Build todas as segundas, quartas e sextas-feiras às 18:00 devem ser criadas usando a sintaxe cron e convertidas do seu fuso horário local para UTC.
Personalize os seguintes prompts para criar expressões cron ou para converter essas expressões em UTC a partir do fuso horário que utilizou para criá-las.
No exemplo a seguir, o Copilot é solicitado a agendar uma programação cron em UTC para efetuar a construção todas as segundas, quartas e sextas-feiras às 18:00, hora padrão do Leste dos EUA.
Build a UTC cron expression for Monday, Wednesday, and Friday at 6:00 PM Eastern Standard Time
Se você já tem uma expressão cron em seu fuso horário local, você pode pedir ao Copilot para convertê-la em UTC. Neste exemplo, uma programação cron para executar todas as segundas, quartas e sextas-feiras às 18h00 (Hora Padrão do Leste, Eastern Standard Time) é convertida para UTC.
Convert the following cron expression from Eastern Standard Time to UTC: 0 18 * * Mon,Wed,Fri
A conversão de uma expressão cron em UTC pode exigir a alteração dos dias da semana na sua expressão. No exemplo a seguir, o Copilot é solicitado a criar uma tarefa cron no UTC para ser executada de segunda a sexta-feira às 00h30, horário padrão da Europa Central. A hora padrão da Europa Central está à frente da UTC, de modo que a expressão resultante começa no final da noite de domingo, em vez de no início da manhã de segunda-feira, e termina na quinta-feira.
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time
Para obter detalhes adicionais sobre a expressão cron gerada pelo Copilot, você pode pedir ao Copilot para fornecer uma explicação da expressão cron gerada em seu prompt.
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time and explain the different parts of the cron expression
O copiloto é alimentado por IA, por isso surpresas e erros são possíveis. Para obter mais informações, consulte Perguntas frequentes sobre o uso geral do Copilot.
Visualização de execuções agendadas
Você pode visualizar uma prévia das próximas construções agendadas escolhendo Execuções agendadas no menu de contexto da página de detalhes do pipeline para o seu pipeline.
Importante
A exibição de execuções agendadas mostra apenas os pipelines programados para serem executados dentro de sete dias a partir da data atual. Se a sua agenda cron tiver um intervalo superior a 7 dias e a próxima execução estiver agendada para começar após sete dias a partir da data atual, ela não será exibida na visualização Execuções agendadas .
Depois de criar ou atualizar os seus gatilhos agendados, pode verificá-los na vista Execuções agendadas.
Este exemplo exibe as execuções agendadas para a agenda seguinte.
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
A janela Execuções agendadas exibe as horas convertidas para o fuso horário local definido no computador usado para navegar até o portal do Azure DevOps. Este exemplo exibe uma captura de tela feita no fuso horário EST.
Observação
Se você atualizar o agendamento para um pipeline em execução, o modo de exibição Execuções agendadas não será atualizado com o novo agendamento até que o pipeline em execução seja concluído.
Você pode visualizar uma prévia das próximas construções agendadas escolhendo Execuções agendadas no menu de contexto da página de detalhes do pipeline para o seu pipeline.
Depois de criar ou atualizar seus gatilhos agendados, você pode verificá-los usando esse modo de exibição.
Em execução mesmo quando não há alterações de código
Por padrão, seu pipeline não será executado como agendado se não houver alterações de código desde a última execução agendada bem-sucedida. Por exemplo, considere que você programou um pipeline para funcionar todas as noites às 21h00. Durante os dias da semana, tu fazes várias alterações ao teu código. O processo é executado de acordo com o cronograma. Durante os fins de semana, você não faz nenhuma alteração no seu código. Se não houve alterações no código desde a execução programada na sexta-feira, o pipeline não será executado como programado durante o fim de semana.
Para forçar a execução de um pipeline mesmo quando não há alterações de código, você pode usar a always palavra-chave.
schedules:
- cron: ...
...
always: true
Para configurar o pipeline agendado para compilação somente se houve uma alteração desde a última compilação, marque Somente agendar compilações se a origem ou o pipeline tiver sido alterado.
Limites no número de execuções programadas em pipelines YAML
Existem determinados limites para a frequência com que pode agendar a execução de um pipeline. Estes limites foram implementados para evitar a utilização indevida de recursos do Azure Pipelines, nomeadamente os agentes alojados na Microsoft. Os limites são:
- cerca de 1000 corridas por gasoduto por semana
- 10 execuções por pipeline a cada 15 minutos
Migrando do editor clássico
Os exemplos a seguir mostram como migrar suas agendas do editor clássico para o YAML.
- Exemplo: compilação noturna do repositório Git em vários fusos horários
- Exemplo: Construção noturna com diferentes frequências
Exemplo: compilação noturna do repositório Git em vários fusos horários
Neste exemplo, o gatilho agendado do editor clássico tem duas entradas, resultando nas compilações a seguir.
De segunda a sexta-feira, às 3:00 da manhã (fuso horário UTC + 5:30), construa ramificações que atendam aos critérios de filtro de ramificação
features/india/*.
Todas as segunda a sexta-feira às 3:00 (hora UTC - 5:00), construir ramificações que atendam aos critérios do filtro da ramificação
features/nc/*.
O gatilho agendado YAML equivalente é:
schedules:
- cron: '30 21 * * Sun-Thu'
displayName: M-F 3:00 AM (UTC + 5:30) India daily build
branches:
include:
- /features/india/*
- cron: '0 8 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC - 5) NC daily build
branches:
include:
- /features/nc/*
No primeiro horário, M-F 3:00 AM (UTC + 5:30) India daily build, a sintaxe cron (mm HH DD MM DW) é 30 21 * * Sun-Thu.
- Minutos e Horas -
30 21- Este mapeia para21:30 UTC(9:30 PM UTC). Como o fuso horário especificado no editor clássico é UTC + 5:30, precisamos subtrair 5 horas e 30 minutos do tempo de compilação desejado de 3:00 AM para chegar ao horário UTC desejado para especificar para o gatilho YAML. Você pode obter assistência de IA do GitHub Copilot para criar sua expressão cron. - Dias e meses são especificados como coringas, pois esta programação não especifica para ser executada apenas em determinados dias do mês ou num mês específico.
- Dias da semana -
Sun-Thu- devido à conversão de fuso horário, para que os nossos processos sejam executados às 3:00 AM no fuso horário UTC+5:30 da Índia, precisamos especificar iniciá-los no dia anterior no horário UTC. Também podemos especificar os dias da semana como0-4ou0,1,2,3,4.
No segundo horário, Seg-Sex 3:00 AM (UTC - 5) NC versão diária, a sintaxe cron é 0 8 * * Mon-Fri.
- Minutos e Horas -
0 8- Isto é mapeado para8:00 AM UTC. Como o fuso horário especificado no editor clássico é UTC - 5:00, precisamos adicionar 5 horas a partir do tempo de compilação desejado de 3:00 AM para chegar ao horário UTC desejado para especificar para o gatilho YAML. Você pode obter assistência de IA do GitHub Copilot para criar sua expressão cron. - Dias e meses são especificados como coringas, pois esta programação não especifica para ser executada apenas em determinados dias do mês ou num mês específico.
- Dias da semana -
Mon-Fri- Como nossas conversões de fuso horário não abrangem vários dias da semana para nossa programação desejada, não precisamos fazer nenhuma conversão aqui. Também podemos especificar os dias da semana como1-5ou1,2,3,4,5.
Importante
Os fusos horários UTC nos gatilhos agendados do YAML não contabilizam o horário de verão.
Sugestão
Ao usar abreviaturas de 3 letras para os dias da semana e desejar um período de vários dias até Domingo, Domingo deve ser considerado o primeiro dia da semana, por exemplo, para um horário à meia-noite EST, de quinta-feira a domingo, a sintaxe cron é 0 5 * * Sun,Thu-Sat.
Exemplo: Construção noturna com diferentes frequências
Neste exemplo, o gatilho agendado do editor clássico tem duas entradas, resultando nas compilações a seguir.
De segunda a sexta-feira às 3:00 AM UTC, construa as ramificações que atendam aos critérios dos filtros de ramificação
mainereleases/*.
Todos os domingos às 3:00 da manhã UTC, construa a ramificação
releases/lastversion, mesmo que a origem ou o pipeline não tenha mudado.
O gatilho agendado YAML equivalente é:
schedules:
- cron: '0 3 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC) daily build
branches:
include:
- main
- /releases/*
- cron: '0 3 * * Sun'
displayName: Sunday 3:00 AM (UTC) weekly latest version build
branches:
include:
- /releases/lastversion
always: true
Na primeira programação, M-F 3:00 AM (UTC) compilação diária, a sintaxe cron é 0 3 * * Mon-Fri.
- Minutos e Horas -
0 3- Isto é mapeado para3:00 AM UTC. Como o fuso horário especificado no editor clássico é UTC, não precisamos fazer nenhuma conversão de fuso horário. - Dias e meses são especificados como coringas, pois esta programação não especifica para ser executada apenas em determinados dias do mês ou num mês específico.
- Dias da semana -
Mon-Fri- porque não há conversão de fuso horário, os dias da semana são mapeados diretamente da programação clássica do editor. Também poderíamos especificar os dias da semana como1,2,3,4,5.
No segundo horário, domingo, às 03:00 horas (UTC), compilação da última versão semanal, a sintaxe cron é 0 3 * * Sun.
- Minutos e Horas -
0 3- Isto é mapeado para3:00 AM UTC. Como o fuso horário especificado no editor clássico é UTC, não precisamos fazer nenhuma conversão de fuso horário. - Dias e meses são especificados como coringas, pois esta programação não especifica para ser executada apenas em determinados dias do mês ou num mês específico.
- Dias da semana -
Sun- Como nossas conversões de fuso horário não abrangem vários dias da semana para nossa programação desejada, não precisamos fazer nenhuma conversão aqui. Também poderíamos especificar os dias da semana como0. - Também especificamos
always: true, uma vez que esta compilação está agendada para ser executada, independentemente de o código-fonte ter sido atualizado ou não.
FAQ
- Quero que meu pipeline seja executado apenas no cronograma e não quando alguém empurra uma alteração para uma filial
- Defini um cronograma no arquivo YAML. Mas não correu. O que aconteceu?
- As minhas agendas YAML estavam a funcionar bem. Mas, eles pararam de trabalhar agora. Como faço para depurar isso?
- Meu código não foi alterado, mas uma compilação agendada foi acionada. Porquê?
- Vejo a execução planejada no painel Executões programadas. No entanto, não é executado a essa altura. Porquê?
- Os horários definidos no pipeline YAML funcionam para uma ramificação, mas não para a outra. Como devo proceder para corrigir este problema?
Quero que meu pipeline seja executado apenas no cronograma e não quando alguém empurra uma alteração para uma filial
Se pretenderes que o teu pipeline seja executado apenas conforme o agendamento, e não quando alguém envia uma alteração para uma ramificação ou funde uma alteração à ramificação principal, deves desativar explicitamente os disparadores padrão de CI e PR no pipeline.
Para desabilitar os gatilhos de CI e PR padrão, adicione as instruções a seguir ao seu pipeline YAML e verifique se você não substituiu os gatilhos de pipeline YAML por gatilhos de interface do usuário.
trigger: none
pr: none
Para obter mais informações, consulte definição pr e definição de gatilho.
Defini um cronograma no arquivo YAML. Mas não correu. O que aconteceu?
Verifique as próximas execuções que o Azure Pipelines programou para seu pipeline. Você pode encontrar essas execuções selecionando a ação Execuções agendadas em seu pipeline. A lista é filtrada para mostrar apenas as próximas corridas nos próximos dias. Se isso não atender às suas expectativas, provavelmente é o caso de você ter digitado incorretamente seu cronograma cron, ou você não tem o cronograma definido na ramificação correta. Leia o tópico acima para entender como configurar agendas. Reavalie sua sintaxe cron. Todos os horários para agendamentos cron estão em UTC.
Faça uma pequena alteração trivial no seu arquivo YAML e envie essa atualização para o repositório. Se houve algum problema na leitura das agendas do arquivo YAML anteriormente, ele deve ser corrigido agora.
Se você tiver quaisquer agendas definidas na interface do usuário, suas agendas YAML não serão honradas. Certifique-se de que você não tenha nenhuma agenda de interface do usuário navegando até o editor do seu pipeline e selecionando Triggers.
Há um limite para o número de execuções que você pode agendar para um pipeline. Leia mais sobre limites.
Se não houver alterações no seu código, o Azure Pipelines pode não iniciar novas execuções. Saiba como substituir esse comportamento.
As minhas agendas YAML estavam a funcionar bem. Mas, eles pararam de trabalhar agora. Como faço para depurar isso?
Se não especificou
always:true, o seu pipeline não será agendado, a menos que sejam feitas atualizações no seu código. Verifique se houve alguma alteração no código e como você configurou as agendas.Há um limite de quantas vezes pode agendar o seu pipeline. Verifique se excedeu esses limites.
Verifique se alguém ativou mais agendas na interface do usuário. Abra o editor do pipeline e selecione Triggers. Se eles definiram agendas na interface do usuário, suas agendas YAML não serão honradas.
Verifique se o pipeline está pausado ou desativado. Selecione Configurações para seu pipeline.
Verifique as próximas execuções que o Azure Pipelines programou para seu pipeline. Você pode encontrar essas execuções selecionando a ação Execuções agendadas em seu pipeline. Se não visualizar os horários esperados, faça uma pequena alteração trivial no arquivo YAML e submeta a atualização para o repositório. Isso deve ressincronizar as agendas.
Se você usar o GitHub para armazenar seu código, é possível que o Azure Pipelines tenha sido limitado pelo GitHub quando tentou iniciar uma nova execução. Verifique se você pode iniciar uma nova execução manualmente.
Meu código não foi alterado, mas uma compilação agendada foi acionada. Porquê?
Você pode ter habilitado uma opção para sempre executar uma compilação agendada, mesmo que não haja alterações de código. Se utilizar um ficheiro YAML, verifique a sintaxe para a agenda no ficheiro YAML. Se você usa pipelines clássicos, verifique se marcou essa opção nos gatilhos agendados.
Você pode ter atualizado o pipeline de compilação ou alguma propriedade do pipeline. Isso fará com que uma nova execução seja agendada, mesmo que você não tenha atualizado seu código-fonte. Confira o histórico de alterações na linha de processamento usando o editor clássico.
Você pode ter atualizado a conexão de serviço usada para se conectar ao repositório. Isso fará com que uma nova execução seja agendada, mesmo que você não tenha atualizado seu código-fonte.
O Azure Pipelines primeiro verifica se há atualizações para o seu código. Se o Azure Pipelines não conseguir acessar seu repositório ou obter essas informações, ele criará uma execução informativa. É uma compilação fictícia para informar que o Azure Pipelines não consegue acessar seu repositório.
O seu pipeline pode não ter tido uma construção completamente bem-sucedida. Para determinar se uma nova compilação deve ser agendada ou não, o Azure DevOps procura a última compilação agendada completamente bem-sucedida. Se não encontrar um, ele aciona uma compilação agendada nova. Compilações agendadas parcialmente bem-sucedidas não são consideradas bem-sucedidas, portanto, se seu pipeline tiver apenas compilações parcialmente bem-sucedidas, o Azure DevOps acionará compilações agendadas, mesmo que seu código não tenha sido alterado.
Vejo a execução planejada no painel Executões programadas. No entanto, não é executado a essa altura. Porquê?
- O painel Execuções agendadas mostra todas as agendas potenciais. No entanto, ele pode realmente não ser executado, a menos que você tenha feito atualizações reais para o código. Para forçar uma programação a ser sempre executada, certifique-se de ter definido a propriedade always no pipeline YAML ou marcado a opção de executar sempre num pipeline clássico.
Os horários definidos no pipeline YAML funcionam para uma ramificação, mas não para a outra. Como devo proceder para corrigir este problema?
As agendas são definidas em arquivos YAML e esses arquivos são associados a ramificações. Se você quiser que um pipeline seja agendado para uma ramificação específica, digamos features/X, certifique-se de que o arquivo YAML nessa ramificação tenha o cronograma cron definido nele e que ele tenha as inclusões de ramificação corretas para o agendamento. O arquivo YAML na features/X ramificação deve ter o seguinte schedule neste exemplo:
schedules:
- cron: '0 12 * * 0' # replace with your schedule
branches:
include:
- features/X
Para obter mais informações, consulte Considerações de ramificação para gatilhos agendados.