Konfigurera scheman för pipelines

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Azure Pipelines innehåller flera typer av utlösare för att konfigurera hur din pipeline startar.

  • Schemalagda utlösare startar din pipeline baserat på ett schema, till exempel en nattlig version. Den här artikeln innehåller vägledning om hur du använder schemalagda utlösare för att köra dina pipelines baserat på ett schema.
  • Händelsebaserade utlösare startar din pipeline som svar på händelser, till exempel att skapa en pull-begäran eller skicka till en gren. Information om hur du använder händelsebaserade utlösare finns i Utlösare i Azure Pipelines.

Du kan kombinera schemalagda och händelsebaserade utlösare i dina pipelines, till exempel för att verifiera bygget varje gång en push görs (CI-utlösare), när en pull-begäran görs (PR-utlösare) och en nattlig version (schemalagd utlösare). Om du bara vill skapa din pipeline enligt ett schema och inte svara på händelsebaserade utlösare kontrollerar du att pipelinen inte har några andra utlösare aktiverade. YAML-pipelines på en GitHub-lagringsplats har till exempel CI-utlösare och PR-utlösare aktiverade som standard. Information om hur du inaktiverar standardutlösare finns i Utlösare i Azure Pipelines och navigera till avsnittet som täcker din lagringsplatstyp.

Schemalagda utlösare

Viktigt!

Schemalagda utlösare som definierats med hjälp av användargränssnittet för pipelineinställningar har företräde framför YAML-schemalagda utlösare.

Om din YAML-pipeline har både schemalagd YAML utlösare och gränssnittsdefinierade schemalagda utlösare körs endast de gränssnittsdefinierade schemalagda utlösarna. Om du vill köra de YAML-definierade schemalagda utlösarna i YAML-pipelinen måste du ta bort de schemalagda utlösare som definierats i användargränssnittet för pipelineinställningar. När alla schemalagda utlösare för användargränssnittet har tagits bort måste en push göras för att de SCHEMALAGDa YAML-utlösarna ska börja utvärderas.

Information om hur du tar bort schemalagda utlösare för användargränssnittet från en YAML-pipeline finns i UI-inställningar åsidosätter schemalagda YAML-utlösare.

Schemalagda utlösare konfigurerar en pipeline så att den körs enligt ett schema som definierats med cron-syntax.

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 changes since the last successful scheduled run. The default is false.
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 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

Schemalagda pipelines i YAML har följande begränsningar.

  • Tidszonen för cron-scheman är UTC.
  • Om du anger en exclude sats utan en include sats för branchesmotsvarar det att * ange i include -satsen.
  • Du kan inte använda pipelinevariabler när du anger scheman.
  • Om du använder mallar i YAML-filen måste scheman anges i yaml-huvudfilen och inte i mallfilerna.

Branchöverväganden för schemalagda utlösare

Schemalagda utlösare utvärderas för en gren när följande händelser inträffar.

  • En pipeline skapas.
  • En pipelines YAML-fil uppdateras, antingen från en push-överföring eller genom att redigera den i pipelineredigeraren.
  • En pipelines YAML-filsökväg uppdateras för att referera till en annan YAML-fil. Den här ändringen uppdaterar bara standardgrenen och hämtar därför bara scheman i den uppdaterade YAML-filen för standardgrenen. Om några andra grenar därefter sammanfogar standardgrenen, till exempel git pull origin main, utvärderas de schemalagda utlösarna från den nyligen refererade YAML-filen för den grenen.
  • En ny gren skapas.

När en av dessa händelser inträffar i en gren läggs alla schemalagda körningar för den grenen till, om grenen matchar grenfiltren för de schemalagda utlösarna i YAML-filen i den grenen.

Viktigt!

Schemalagda körningar för en gren läggs bara till om grenen matchar grenfiltren för de schemalagda utlösarna i YAML-filen i den specifika grenen.

Till exempel skapas en pipeline med följande schema och den här versionen av YAML-filen checkas in i grenen main . Det här schemat skapar grenen main dagligen.

# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Därefter skapas en ny gren baserat på main, med namnet new-feature. De schemalagda utlösarna från YAML-filen i den nya grenen läses och eftersom det inte finns någon matchning för grenen new-feature görs inga ändringar i de schemalagda versionerna och grenen new-feature skapas inte med en schemalagd utlösare.

Om new-feature läggs till i branches listan och den här ändringen skickas till grenen new-feature , läss YAML-filen och eftersom new-feature den nu finns i listan med grenar läggs en schemalagd version till för grenen new-feature .

# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - new-feature

Tänk nu på att en gren med namnet release skapas baserat på mainoch sedan release läggs till i grenfiltren i YAML-filen i grenen main , men inte i den nyligen skapade release grenen.

# 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

Eftersom release har lagts till i grenfiltren i grenen main , men inte till grenfiltren i grenen release , kommer grenen release inte att byggas enligt det schemat. Endast när grenen release läggs till i grenfiltren i YAML-filen i versionsgrenen läggs den schemalagda versionen till i schemaläggaren.

Batchöverväganden för schemalagda utlösare

Kommentar

Egenskapen batch är tillgänglig på Azure DevOps Server 2022.1 och senare.

Egenskapen batch konfigurerar om pipelinen ska köras om den tidigare schemalagda körningen pågår. Standardvärdet är false. Det här gäller oavsett vilken version av pipelinelagringsplatsen som används.

I följande tabell beskrivs hur always och batch interagerar.

Alltid Batch Funktionssätt
false false Pipeline körs endast om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen.
false true Pipeline körs endast om det sker en ändring i förhållande till den senaste lyckade schemalagda pipelinekörningen och det inte finns någon pågående schemalagd pipelinekörning.
true false Pipeline körs enligt cron-schemat.
true true Pipeline körs enligt cron-schemat.

Viktigt!

När always är truekörs pipelinen enligt cron-schemat, även när batch är true.

Variabeln Build.CronSchedule.DisplayName

Kommentar

Variabeln Build.CronSchedule.DisplayName är tillgänglig på Azure DevOps Server 2022.1 och senare.

När en pipeline körs på grund av en schemalagd cron-utlösare innehåller den fördefinierade Build.CronSchedule.DisplayName variabeln det displayName cron-schema som utlöste pipelinekörningen.

YAML-pipelinen kan innehålla flera cron-scheman och du kanske vill att din pipeline ska köra olika steg eller jobb baserat på vilket cron-schema som körs. Du har till exempel ett nattligt bygge och en veckoversion, och du vill bara köra en viss fas under det nattliga bygget. Du kan använda variabeln Build.CronSchedule.DisplayName i ett jobb- eller fasvillkor för att avgöra om jobbet eller fasen ska köras.

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

Fler exempel finns i schedules.cron-exempel.

Schemalagda versioner stöds inte i YAML-syntaxen i Azure DevOps Server 2019. När du har skapat din YAML-byggpipeline kan du använda pipelineinställningar för att ange en schemalagd utlösare.

Exempel

I följande exempel definieras två scheman:

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

Det första schemat, Daily midnight build, kör en pipeline vid midnatt varje dag, men bara om koden har ändrats sedan den senaste lyckade schemalagda körningen, för main och alla releases/* grenar, förutom grenarna under releases/ancient/*.

Det andra schemat, Weekly Sunday Build, kör en pipeline kl. 12.00 på söndagar, oavsett om koden har ändrats eller inte sedan den senaste körningen, för alla releases/* grenar.

Kommentar

Tidszonen för cron-scheman är UTC, så i dessa exempel är midnattsversionen och 12:00-versionen vid midnatt och 12:00 i UTC.

Fler exempel finns i Migrera från den klassiska redigeraren.

Schemalagda versioner stöds inte i YAML-syntaxen i Azure DevOps Server 2019. När du har skapat din YAML-byggpipeline kan du använda pipelineinställningar för att ange en schemalagd utlösare.

Cron-syntax

Varje schemalagt cron-uttryck för Azure Pipelines-utlösare är ett utrymmesavgränsat uttryck med fem poster i följande ordning. Uttrycket omges av enkla citattecken '.

mm HH DD MM DW
 \  \  \  \  \__ Days of week
  \  \  \  \____ Months
   \  \  \______ Days
    \  \________ Hours
     \__________ Minutes
Fält Godkända värden
Minuter 0 till 59
Tider 0 till 23
Dagar 1 till 31
Månader 1 till 12, fullständiga engelska namn, första tre bokstäverna i engelska namn
Veckodagar 0 till 6 (börjar med söndag), fullständiga engelska namn, de tre första bokstäverna i engelska namn

Värden kan ha följande format.

Format Exempel beskrivning
Jokertecken * Matchar alla värden för det här fältet
Enstaka värde 5 Anger ett enda värde för det här fältet
Kommaavgränsad 3,5,6 Anger flera värden för det här fältet. Flera format kan kombineras, till exempel 1,3-6
Intervall 1-3 Det inkluderande värdeintervallet för det här fältet
Intervall */4 eller 1-5/2 Intervall som ska matchas för det här fältet, till exempel vart fjärde värde eller intervallet 1–5 med ett stegintervall på 2
Exempel Cron-uttryck
Bygg varje måndag, onsdag och fredag kl. 18:00 0 18 * * Mon,Wed,Fri, 0 18 * * 1,3,5 eller 0 18 * * 1-5/2
Skapa var 6:e timme 0 0,6,12,18 * * *, 0 */6 * * * eller 0 0-18/6 * * *
Skapa var 6:e timme med start kl. 09:00 0 9,15,21 * * * eller 0 9-21/6 * * *

Mer information om format som stöds finns i Crontab-uttryck.

Schemalagda versioner stöds inte i YAML-syntaxen i Azure DevOps Server 2019. När du har skapat din YAML-byggpipeline kan du använda pipelineinställningar för att ange en schemalagd utlösare.

Vy över schemalagda körningar

Du kan visa en förhandsversion av kommande schemalagda versioner genom att välja Schemalagda körningar från snabbmenyn på pipelineinformationssidan för din pipeline.

Viktigt!

Vyn schemalagda körningar visar endast pipelines som är schemalagda att köras inom sju dagar från det aktuella datumet. Om cron-schemat har ett intervall som är längre än 7 dagar och nästa körning är schemalagd att starta efter sju dagar från det aktuella datumet visas det inte i vyn Schemalagda körningar .

Menyn Schemalagda körningar

När du har skapat eller uppdaterat dina schemalagda utlösare kan du verifiera dem med hjälp av vyn Schemalagda körningar .

Schemalagda körningar

I det här exemplet visas schemalagda körningar för följande schema.

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Fönstret Schemalagda körningar visar de tider som konverterats till den lokala tidszonen som angetts på den dator som används för att bläddra till Azure DevOps-portalen. I det här exemplet visas en skärmbild som tagits i EST-tidszonen.

Kommentar

Om du uppdaterar schemat för en pipeline som körs uppdateras inte vyn Schemalagda körningar med det nya schemat förrän pipelinen som körs har slutförts.

Schemalagda versioner stöds inte i YAML-syntaxen i Azure DevOps Server 2019. När du har skapat din YAML-byggpipeline kan du använda pipelineinställningar för att ange en schemalagd utlösare.

Körs även om det inte finns några kodändringar

Pipelinen körs som standard inte som schemalagd om det inte har gjorts några kodändringar sedan den senaste lyckade schemalagda körningen. Anta till exempel att du har schemalagt att en pipeline ska köras varje kväll klockan 21:00. Under vardagar skickar du olika ändringar i koden. Pipelinen körs enligt schema. Under helgerna gör du inga ändringar i koden. Om det inte har gjorts några kodändringar sedan den schemalagda körningen i fredags körs inte pipelinen som planerat under helgen.

Om du vill tvinga en pipeline att köras även om det inte finns några kodändringar kan du använda nyckelordet always .

schedules:
- cron: ...
  ...
  always: true

Schemalagda versioner stöds inte i YAML-syntaxen i den här versionen av Azure DevOps Server. När du har skapat din YAML-byggpipeline kan du använda pipelineinställningar för att ange en schemalagd utlösare.

Begränsningar för antalet schemalagda körningar i YAML-pipelines

Det finns vissa begränsningar för hur ofta du kan schemalägga en pipeline att köras. Dessa begränsningar har införts för att förhindra missbruk av Azure Pipelines-resurser, särskilt Microsofts värdbaserade agenter. Gränserna är:

  • cirka 1 000 körningar per pipeline och vecka
  • 10 körningar per pipeline per 15 minuter

Migrera från den klassiska redigeraren

I följande exempel visas hur du migrerar dina scheman från den klassiska redigeraren till YAML.

Exempel: Nattligt bygge av Git-lagringsplats i flera tidszoner

I det här exemplet har den klassiska schemalagda utlösaren för redigeraren två poster som skapar följande versioner.

  • Varje måndag – fredag kl. 03:00 (UTC + 5:30 tidszon), skapar grenar som uppfyller villkoret features/india/* för grenfilter

    Schemalagd utlösare UTC + 5:30 tidszon

  • Varje måndag – fredag kl. 03:00 (UTC– 5:00 tidszon) skapar grenar som uppfyller villkoret features/nc/* för grenfilter

    Schemalagd utlösare UTC -5:00 tidszon

Motsvarande schemalagda YAML-utlösare är:

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/*

I det första schemat, M-F 03:00 (UTC + 5:30) Indien daglig version, är 30 21 * * Sun-Thucron-syntaxen (mm HH DD MM DW) .

  • Minuter och timmar – 30 21 – Detta mappar till 21:30 UTC (9:30 PM UTC). Eftersom den angivna tidszonen i den klassiska redigeraren är UTC + 5:30 måste vi subtrahera 5 timmar och 30 minuter från önskad byggtid på 03:00 för att komma fram till önskad UTC-tid för att ange för YAML-utlösaren.
  • Dagar och månader anges som jokertecken eftersom det här schemat inte anger att endast ska köras vissa dagar i månaden eller en viss månad.
  • Dagar i veckan – Sun-Thu – på grund av tidszonskonverteringen, för att våra versioner ska köras kl. 03:00 i tidszonen UTC + 5:30 Indien, måste vi ange att de ska startas föregående dag i UTC-tid. Vi kan också ange veckodagarna som 0-4 eller 0,1,2,3,4.

I det andra schemat, M-F 03:00 (UTC – 5) NC daglig version, är 0 8 * * Mon-Fricron-syntaxen .

  • Minuter och timmar – 0 8 – Detta mappar till 8:00 AM UTC. Eftersom den angivna tidszonen i den klassiska redigeraren är UTC – 5:00 måste vi lägga till 5 timmar från önskad byggtid på 03:00 för att komma fram till önskad UTC-tid för att ange för YAML-utlösaren.
  • Dagar och månader anges som jokertecken eftersom det här schemat inte anger att endast ska köras vissa dagar i månaden eller en viss månad.
  • Dagar i veckan – Mon-Fri – Eftersom våra tidszonskonverteringar inte sträcker sig över flera dagar i veckan för önskat schema behöver vi inte göra någon konvertering här. Vi kan också ange veckodagarna som 1-5 eller 1,2,3,4,5.

Viktigt!

UTC-tidszonerna i YAML-schemalagda utlösare tar inte hänsyn till sommartid.

Dricks

När du använder tre bokstavsdagar i veckan och vill ha ett intervall på flera dagar genom solen bör solen betraktas som den första dagen i veckan, t.ex. För ett schema för midnatt EST, torsdag till söndag, är 0 5 * * Sun,Thu-Satcron-syntaxen .

Exempel: Skapa varje natt med olika frekvenser

I det här exemplet har den klassiska schemalagda utlösaren för redigeraren två poster som skapar följande versioner.

  • Varje måndag – fredag kl. 03:00 UTC skapar du grenar som uppfyller main villkoren för grenfilter och releases/* grenfilter

    Schemalagd utlösarfrekvens 1.

  • Varje söndag kl. 03:00 UTC skapar du grenen releases/lastversion , även om källan eller pipelinen inte har ändrats

    Schemalagd utlösarfrekvens 2.

Motsvarande schemalagda YAML-utlösare är:

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

I det första schemat, M-F 3:00 AM (UTC) daily build, är 0 3 * * Mon-Fricron-syntaxen .

  • Minuter och timmar – 0 3 – Detta mappar till 3:00 AM UTC. Eftersom den angivna tidszonen i den klassiska redigeraren är UTC behöver vi inte göra några tidszonskonverteringar.
  • Dagar och månader anges som jokertecken eftersom det här schemat inte anger att endast ska köras vissa dagar i månaden eller en viss månad.
  • Veckodagar – – Mon-Fri eftersom det inte finns någon tidszonskonvertering mappar veckodagarna direkt från det klassiska redigeringsschemat. Vi kan också ange veckodagarna som 1,2,3,4,5.

I det andra schemat, söndag 03:00 (UTC) veckovis senaste versionsversion, är 0 3 * * Suncron-syntaxen .

  • Minuter och timmar – 0 3 – Detta mappar till 3:00 AM UTC. Eftersom den angivna tidszonen i den klassiska redigeraren är UTC behöver vi inte göra några tidszonskonverteringar.
  • Dagar och månader anges som jokertecken eftersom det här schemat inte anger att endast ska köras vissa dagar i månaden eller en viss månad.
  • Dagar i veckan – Sun – Eftersom våra tidszonskonverteringar inte sträcker sig över flera dagar i veckan för önskat schema behöver vi inte göra någon konvertering här. Vi kan också ange veckodagarna som 0.
  • Vi anger always: true också eftersom den här versionen är schemalagd att köra om källkoden har uppdaterats eller inte.

Vanliga frågor

Jag vill att min pipeline endast ska köras enligt schemat och inte när någon skickar en ändring till en gren

Om du bara vill att pipelinen ska köras enligt schemat, och inte när någon skickar en ändring till en gren eller sammanfogar en ändring av huvudgrenen, måste du uttryckligen inaktivera ci- och PR-standardutlösare på pipelinen.

Om du vill inaktivera ci- och PR-standardutlösare lägger du till följande instruktioner i YAML-pipelinen och kontrollerar att du inte har åsidosatt YAML-pipelineutlösare med UI-utlösare.

trigger: none
pr: none

Mer information finns i pr-definition och utlösardefinition.

Jag definierade ett schema i YAML-filen. Men den sprang inte. Vad hände?

  • Kontrollera de kommande körningarna som Azure Pipelines har schemalagt för din pipeline. Du hittar dessa körningar genom att välja åtgärden Schemalagda körningar i pipelinen. Listan filtreras ned för att bara visa de kommande körningarna under de närmaste dagarna. Om detta inte uppfyller dina förväntningar är det förmodligen så att du har feltypat cron-schemat, eller så har du inte det schema som definierats i rätt gren. Läs avsnittet ovan för att förstå hur du konfigurerar scheman. Omvärdera cron-syntaxen. Alla tider för cron-scheman finns i UTC.

  • Gör en liten trivial ändring av YAML-filen och skicka uppdateringen till lagringsplatsen. Om det uppstod problem med att läsa scheman från YAML-filen tidigare bör det åtgärdas nu.

  • Om du har några scheman som definierats i användargränssnittet respekteras inte dina YAML-scheman. Se till att du inte har några gränssnittsscheman genom att gå till redigeraren för din pipeline och sedan välja Utlösare.

  • Det finns en gräns för hur många körningar du kan schemalägga för en pipeline. Läs mer om gränser.

  • Om koden inte ändras kanske Azure Pipelines inte startar nya körningar. Lär dig hur du åsidosätter det här beteendet.

Mina YAML-scheman fungerade bra. Men de slutade fungera nu. Hur gör jag för att felsöka det här?

  • Om du inte angav always:truekommer pipelinen inte att schemaläggas om det inte finns några uppdateringar av koden. Kontrollera om det har gjorts några kodändringar och hur du har konfigurerat schemana.

  • Det finns en gräns för hur många gånger du kan schemalägga din pipeline. Kontrollera om du har överskridit dessa gränser.

  • Kontrollera om någon har aktiverat fler scheman i användargränssnittet. Öppna redigeraren för pipelinen och välj Utlösare. Om de har definierat scheman i användargränssnittet kommer dina YAML-scheman inte att uppfyllas.

  • Kontrollera om pipelinen är pausad eller inaktiverad. Välj Inställningar för din pipeline.

  • Kontrollera de kommande körningarna som Azure Pipelines har schemalagt för din pipeline. Du hittar dessa körningar genom att välja åtgärden Schemalagda körningar i pipelinen. Om du inte ser de scheman som du förväntade dig gör du en liten trivial ändring av YAML-filen och push-överför uppdateringen till lagringsplatsen. Detta bör synkronisera om schemana.

  • Om du använder GitHub för att lagra din kod är det möjligt att Azure Pipelines kan ha begränsats av GitHub när den försökte starta en ny körning. Kontrollera om du kan starta en ny körning manuellt.

Min kod har inte ändrats, men en schemalagd version utlöses. Varför?

  • Du kan ha aktiverat ett alternativ för att alltid köra en schemalagd version även om det inte finns några kodändringar. Om du använder en YAML-fil kontrollerar du syntaxen för schemat i YAML-filen. Om du använder klassiska pipelines kontrollerar du om du har markerat det här alternativet i de schemalagda utlösarna.

  • Du kan ha uppdaterat bygg-pipelinen eller någon egenskap för pipelinen. Detta gör att en ny körning schemaläggs även om du inte har uppdaterat källkoden. Kontrollera historiken för ändringar i pipelinen med hjälp av den klassiska redigeraren.

  • Du kan ha uppdaterat tjänstanslutningen som används för att ansluta till lagringsplatsen. Detta gör att en ny körning schemaläggs även om du inte har uppdaterat källkoden.

  • Azure Pipelines kontrollerar först om det finns några uppdateringar av koden. Om Azure Pipelines inte kan nå din lagringsplats eller hämta den här informationen skapar den en informationskörning. Det är en dummy-version som låter dig veta att Azure Pipelines inte kan nå din lagringsplats.

  • Din pipeline kanske inte har en helt lyckad version. För att avgöra om en ny version ska schemaläggas eller inte letar Azure DevOps upp den senaste helt lyckade schemalagda versionen. Om den inte hittar någon utlöser den en ny schemalagd version. Delvis lyckade schemalagda versioner anses inte vara lyckade, så om din pipeline bara har delvis lyckade versioner utlöser Azure DevOps schemalagda versioner, även om koden inte har ändrats.

Jag ser den planerade körningen i panelen Schemalagda körningar. Den körs dock inte vid den tidpunkten. Varför?

  • Panelen Schemalagda körningar visar alla potentiella scheman. Men den kanske inte körs om du inte har gjort verkliga uppdateringar av koden. Om du vill tvinga ett schema att alltid köras kontrollerar du att du har angett egenskapen always i YAML-pipelinen eller kontrollerat alternativet att alltid köras i en klassisk pipeline.

Scheman som definierats i YAML-pipelinen fungerar för en gren men inte den andra. Hur åtgärdar jag detta?

Scheman definieras i YAML-filer och dessa filer är associerade med grenar. Om du vill att en pipeline ska schemaläggas för en viss gren, till exempel features/X, kontrollerar du att YAML-filen i den grenen har cron-schemat definierat i den och att den har rätt greninkluderingar för schemat. YAML-filen i grenen features/X bör ha följande schedule i det här exemplet:

schedules: 
- cron: '0 12 * * 0'   # replace with your schedule
  branches: 
    include: 
    - features/X  

Mer information finns i Branch considerations for scheduled triggers (Grenöverväganden för schemalagda utlösare).