Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines bietet mehrere Arten von Triggern, um zu konfigurieren, wie Ihre Pipeline gestartet wird.
- Geplante Trigger starten Ihre Pipeline basierend auf einem Zeitplan, z. B. einem nächtlichen Build. Dieser Artikel enthält Anleitungen zur Verwendung geplanter Trigger zum Ausführen Ihrer Pipelines basierend auf einem Zeitplan.
- Ereignisbasierte Trigger starten Ihre Pipeline als Reaktion auf Ereignisse, z. B. das Erstellen einer Pullanforderung oder das Pushen an eine Verzweigung. Informationen zur Verwendung ereignisbasierter Trigger finden Sie unter Trigger in Azure Pipelines.
Sie können geplante und ereignisbasierte Trigger in Ihren Pipelines kombinieren, um z. B. den Build jedes Mal zu überprüfen, wenn ein Push (CI-Trigger) erfolgt, wenn eine Pullanforderung (PR-Trigger) und ein nächtlicher Build (geplanter Trigger) erfolgt. Wenn Sie Ihre Pipeline nur in einem Zeitplan erstellen möchten und nicht als Reaktion auf ereignisbasierte Trigger, stellen Sie sicher, dass ihre Pipeline keine anderen Trigger aktiviert hat. Beispielsweise verfügen YAML-Pipelines in einem GitHub-Repository über CI-Trigger und PR-Trigger, die standardmäßig aktiviert sind. Informationen zum Deaktivieren von Standardtriggern finden Sie unter "Trigger in Azure Pipelines ", und navigieren Sie zu dem Abschnitt, der Ihren Repositorytyp abdeckt.
Geplante Auslöser
Von Bedeutung
Geplante Trigger, die mithilfe der YAML-Pipelineeinstellungen-UI definiert sind, haben Vorrang vor geplanten YAML-Triggern.
Wenn Ihre YAML-Pipeline sowohl über geplante YAML-Trigger als auch über benutzeroberfläche definierte geplante Trigger verfügt, werden nur die von der Benutzeroberfläche definierten geplanten Trigger ausgeführt. Um die in Ihrer YAML-Pipeline definierten geplanten Trigger auszuführen, müssen Sie die in der YAML-Pipelineeinstellungen-Benutzeroberfläche definierten geplanten Trigger entfernen. Sobald alle geplanten UI-Trigger entfernt wurden, muss ein Push vorgenommen werden, damit die geplanten YAML-Trigger ausgewertet werden können.
Informationen zum Löschen von geplanten UI-Triggern aus einer YAML-Pipeline finden Sie unter UI-Einstellungen zum Außerkraftsetzen von geplanten YAML-Triggern.
Geplante Trigger konfigurieren eine Pipeline so, dass sie in einem zeitplan ausgeführt wird, der mithilfe der Cron-Syntax definiert ist.
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.
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
Geplante Pipelines in YAML weisen die folgenden Einschränkungen auf.
- Die Zeitzone für Cron-Zeitpläne ist UTC. Sie können KI-Unterstützung von GitHub Copilot erhalten, um Ihre Cron-Ausdrücke zu erstellen.
- Wenn Sie eine excludeKlausel ohneincludeKlauselbranchesangeben, entspricht sie der Angabe*in derincludeKlausel.
- Sie können Pipelinevariablen nicht verwenden, wenn Sie Zeitpläne angeben.
- Wenn Sie Vorlagen in Ihrer YAML-Datei verwenden, müssen die Zeitpläne in der YAML-Hauptdatei und nicht in den Vorlagendateien angegeben werden.
- Wenn eine Pipeline deaktiviert ist, werden aktualisierungen, die an der YAML-Datei vorgenommen wurden, die Zeitplantrigger nicht automatisch aktualisieren.
Überlegungen zu Verzweigungen für geplante Trigger
Geplante Trigger werden für eine Verzweigung ausgewertet, wenn die folgenden Ereignisse auftreten.
- Es wird eine Pipeline erstellt.
- Die YAML-Datei einer Pipeline wird entweder über einen Push aktualisiert oder im Pipeline-Editor bearbeitet.
- Der YAML-Dateipfad einer Pipeline wird aktualisiert, um auf eine andere YAML-Datei zu verweisen. Diese Änderung aktualisiert nur die Standardverzweigung und nimmt daher nur Zeitpläne in der aktualisierten YAML-Datei für die Standardverzweigung auf. Wenn andere Verzweigungen anschließend die Standardverzweigung zusammenführen, git pull origin mainwerden die geplanten Trigger aus der neu referenzierten YAML-Datei für diese Verzweigung ausgewertet.
- Es wird eine neue Verzweigung erstellt.
Nachdem eines dieser Ereignisse in einer Verzweigung erfolgt, werden alle geplanten Ausführungen für diese Verzweigung hinzugefügt, wenn diese Verzweigung mit den Verzweigungsfiltern für die geplanten Trigger übereinstimmt, die in der YAML-Datei in dieser Verzweigung enthalten sind.
Von Bedeutung
Geplante Ausführung für eine Verzweigung wird nur hinzugefügt, wenn die Verzweigung den Verzweigungsfiltern für die geplanten Trigger in der YAML-Datei in dieser bestimmten Verzweigung entspricht.
Beispielsweise wird eine Pipeline mit dem folgenden Zeitplan erstellt, und diese Version der YAML-Datei wird in die main Verzweigung eingecheckt. Dieser Zeitplan erstellt die main Verzweigung täglich.
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
Als Nächstes wird eine neue Verzweigung basierend auf main, benannt new-feature. Die geplanten Trigger aus der YAML-Datei in der neuen Verzweigung werden gelesen, und da keine Übereinstimmung für die new-feature Verzweigung vorhanden ist, werden keine Änderungen an den geplanten Builds vorgenommen, und die new-feature Verzweigung wird nicht mithilfe eines geplanten Triggers erstellt.
Wenn new-feature der branches Liste hinzugefügt wird und diese Änderung an die new-feature Verzweigung übertragen wird, wird die YAML-Datei gelesen, und da new-feature sich jetzt in der Verzweigungsliste befindet, wird ein geplanter Build für die new-feature Verzweigung hinzugefügt.
# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - new-feature
Berücksichtigen Sie nun, dass eine Verzweigung release erstellt wird, die auf maingrundlage von und dann release den Verzweigungsfiltern in der YAML-Datei in der main Verzweigung, aber nicht in der neu erstellten release Verzweigung hinzugefügt wird.
# 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
Da release die Verzweigungsfilter in der main Verzweigung, aber nicht den Verzweigungsfiltern in der release Verzweigung hinzugefügt wurden, wird die release Verzweigung nicht auf diesem Zeitplan erstellt. Nur wenn die release Verzweigung den Verzweigungsfiltern in der YAML-Datei in der Release-Verzweigung hinzugefügt wird, wird der geplante Build dem Scheduler hinzugefügt.
Überlegungen zum Batch für geplante Trigger
Hinweis
Die batch Eigenschaft ist auf Azure DevOps Server 2022.1 und höher verfügbar.
Die batch Eigenschaft konfiguriert, ob die Pipeline ausgeführt werden soll, wenn die zuvor geplante Ausführung ausgeführt wird. Wenn batch dies der Zeitpunkt ist true, wird eine neue Pipelineausführung aufgrund des Zeitplans nicht gestartet, wenn eine vorherige Pipelineausführung noch in Bearbeitung ist. Der Standardwert lautet false.
Die batch Eigenschaft wird von der Einstellung der always Eigenschaft beeinflusst. Wenn always dies der Zeitpunkt ist true, wird die Pipeline gemäß dem cron-Zeitplan ausgeführt, auch wenn batch es sich um true eine laufende Ausführung handelt.
| Immer | Batch | Verhalten | 
|---|---|---|
| false | false | Die Pipeline wird nur ausgeführt, wenn eine Änderung im Hinblick auf den letzten erfolgreichen geplanten Pipelinelauf erfolgt, auch wenn eine laufende Ausführung vom letzten geplanten Auslöser erfolgt. | 
| false | true | Pipeline wird nur ausgeführt, wenn eine Änderung im Hinblick auf den letzten erfolgreichen geplanten Pipelinelauf vorhanden ist und keine laufenden geplanten Pipelineausführungen ausgeführt werden. | 
| true | false | Die Pipeline wird gemäß dem Cron-Zeitplan ausgeführt. | 
| true | true | Die Pipeline wird nach dem cron-Zeitplan ausgeführt, auch wenn eine laufende Ausführung erfolgt. | 
Build.CronSchedule.DisplayName-Variable
Hinweis
Die Build.CronSchedule.DisplayName Variable ist auf Azure DevOps Server 2022.1 und höher verfügbar.
Wenn eine Pipeline aufgrund eines cron geplanten Triggers ausgeführt wird, enthält die vordefinierte Build.CronSchedule.DisplayName Variable den displayName Cron-Zeitplan, der die Pipelineausführung ausgelöst hat.
Ihre YAML-Pipeline kann mehrere Cron-Zeitpläne enthalten, und Sie möchten, dass Ihre Pipeline verschiedene Phasen oder Aufträge basierend auf dem Terminplan ausführt. Beispielsweise haben Sie einen nächtlichen Build und einen wöchentlichen Build, und Sie möchten eine bestimmte Phase nur während des nächtlichen Builds ausführen. Sie können die Build.CronSchedule.DisplayName Variable in einem Auftrag oder einer Phasenbedingung verwenden, um zu bestimmen, ob dieser Auftrag oder diese Phase ausgeführt werden soll.
- 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')
Weitere Beispiele finden Sie in den Beispielen "schedules.cron".
Wählen Sie die Tage und Uhrzeiten aus, in denen Sie den Build mit dem klassischen Editor ausführen möchten.
Wenn Ihr Repository Azure Repos Git, GitHub oder Andere Git ist, können Sie auch Verzweigungen angeben, die eingeschlossen und ausgeschlossen werden sollen. Wenn Sie Wildcardzeichen verwenden möchten, geben Sie die Verzweigungsspezifikation (z. B. ) ein, features/modules/*und drücken Sie dann die EINGABETASTE.
               
              
            
Examples
Im folgenden Beispiel werden zwei Zeitpläne definiert:
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
Der erste Zeitplan, Der tägliche Mitternachtsbuild, führt eine Pipeline jeden Tag um Mitternacht aus, aber nur, wenn sich der Code seit der letzten erfolgreichen geplanten Ausführung für main und alle releases/* Verzweigungen geändert hat, mit Ausnahme der Verzweigungen unter releases/ancient/*.
Der zweite Zeitplan, wöchentlicher Sonntagsbuild, führt eine Pipeline am Mittag an Sonntagen aus, unabhängig davon, ob sich der Code seit der letzten Ausführung für alle releases/* Zweige geändert hat oder nicht.
Hinweis
Die Zeitzone für Cron-Zeitpläne ist UTC, daher sind in diesen Beispielen der Mitternachtsbuild und der Mittag-Build um Mitternacht und Mittag in UTC.
Weitere Beispiele finden Sie unter Migrieren aus dem klassischen Editor.
Beispiel: Nightly Build of Git Repo in mehreren Zeitzonen
In diesem Beispiel enthält der geplante klassische Editorauslöser zwei Einträge, die die folgenden Builds erzeugen.
- Jeden Montag - Freitag um 3:00 Uhr (UTC + 5:30 Zeitzone), erstellen Sie Verzweigungen, die die Verzweigungsfilterkriterien - features/india/*erfüllen  
- Jeden Montag - Freitag um 3:00 Uhr (UTC - 5:00 Zeitzone), erstellen Sie Verzweigungen, die den Verzweigungsfilterkriterien - features/nc/*entsprechen  
Beispiel: Nachtbau mit unterschiedlichen Frequenzen
In diesem Beispiel hat der geplante klassische Editorauslöser zwei Einträge, wodurch die folgenden Builds erstellt werden.
- Jeden Montag - Freitag um 3:00 Uhr UTC erstellen Sie Zweigniederlassungen, die die Kriterien für die - mainVerzweigungsfilter erfüllen.- releases/*  
- Jeden Sonntag um 3:00 Uhr UTC erstellen Sie die - releases/lastversionZweigstelle, auch wenn sich die Quelle oder Pipeline nicht geändert hat.  
Cron-Syntax
Jeder geplante Triggerausdruck für Azure Pipelines ist ein durch Leerzeichen getrennter Ausdruck mit fünf Einträgen in der folgenden Reihenfolge. Der Ausdruck wird in einfache Anführungszeichen 'eingeschlossen.
mm HH DD MM DW
 \  \  \  \  \__ Days of week
  \  \  \  \____ Months
   \  \  \______ Days
    \  \________ Hours
     \__________ Minutes
| Feld | Zulässige Werte | 
|---|---|
| Minuten | 0 bis 59 | 
| Stunden | 0 bis 23 | 
| Days | 1 bis 31 | 
| Monate | 1 bis 12, vollständige englische Namen, erste drei Buchstaben englischer Namen | 
| Wochentage | 0 bis 6 (beginnend mit Sonntag), vollständige englische Namen, erste drei Buchstaben englischer Namen | 
Werte können in den folgenden Formaten vorliegen.
| Format | Example | Description | 
|---|---|---|
| Platzhalter | * | Gleicht alle Werte für dieses Feld ab. | 
| Einzelner Wert | 5 | Gibt einen einzelnen Wert für dieses Feld an. | 
| Trennzeichen getrennt | 3,5,6 | Gibt mehrere Werte für dieses Feld an. Mehrere Formate können kombiniert werden, z. B. 1,3-6 | 
| Schussbereiche | 1-3 | Der inklusive Wertebereich für dieses Feld | 
| Intervalle | */4oder1-5/2 | Übereinstimmungsintervalle für dieses Feld, z. B. jeder vierte Wert oder der Bereich 1-5 mit einem Schrittintervall von 2 | 
| Example | Cron-Ausdruck | 
|---|---|
| Jeden Montag, Mittwoch und Freitag um 18:00 Uhr erstellen | 0 18 * * Mon,Wed,Fri,0 18 * * 1,3,5oder0 18 * * 1-5/2 | 
| Erstellen sie alle 6 Stunden | 0 0,6,12,18 * * *,0 */6 * * *oder0 0-18/6 * * * | 
| Erstellen Sie alle 6 Stunden ab 9:00 Uhr | 0 9,15,21 * * *oder0 9-21/6 * * * | 
Weitere Informationen zu unterstützten Formaten finden Sie unter Crontab Expression.
Verwenden von GitHub Copilot zum Erstellen eines cron-Ausdrucks
Sie können KI-Unterstützung von GitHub Copilot erhalten, um Cron-Ausdrücke zu erstellen oder vorhandene Cron-Ausdrücke aus Ihrer lokalen Zeitzone in UTC zu konvertieren.
Azure Pipelines-Cron-Zeitpläne werden in UTC definiert, sodass Zeitpläne wie "Montag", "Mittwoch" und "Freitag" um 18:00 Uhr mithilfe der Cron-Syntax erstellt und von Ihrer lokalen Zeitzone in UTC konvertiert werden müssen.
Passen Sie die folgenden Eingabeaufforderungen an, um Cron-Ausdrücke zu erstellen, oder konvertieren Sie Cron-Ausdrücke aus der Zeitzone, die Sie zum Erstellen der Ausdrücke verwendet haben.
Im folgenden Beispiel wird Copilot aufgefordert, einen UTC-Cron-Zeitplan zu erstellen, um jeden Montag, Mittwoch und Freitag um 18:00 Uhr Eastern Standard Time zu erstellen.
Build a UTC cron expression for Monday, Wednesday, and Friday at 6:00 PM Eastern Standard Time
Wenn Sie bereits über einen Cron-Ausdruck in Ihrer lokalen Zeitzone verfügen, können Sie Copilot bitten, ihn in UTC zu konvertieren. In diesem Beispiel wird ein Cron-Zeitplan zum Erstellen jeden Montag, Mittwoch und Freitag um 18:00 Uhr (0 18 * * Mon,Wed,Fri) Eastern Standard Time in UTC konvertiert.
Convert the following cron expression from Eastern Standard Time to UTC: 0 18 * * Mon,Wed,Fri
Das Konvertieren eines Cron-Ausdrucks in UTC erfordert möglicherweise eine Änderung der Wochentage in Ihrem Ausdruck. Im folgenden Beispiel wird Copilot aufgefordert, einen UTC-Cron-Zeitplan zu erstellen, um Montag bis Freitag um 12:30 Uhr Mitteleuropäische Standardzeit zu erstellen. Die Mitteleuropäische Standardzeit liegt vor UTC, sodass der resultierende Ausdruck am späten Sonntagabend statt am frühen Montagmorgen beginnt und am Donnerstag endet.
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time
Um zusätzliche Details zu dem von Copilot generierten Cron-Ausdruck zu erhalten, können Sie Copilot bitten, eine Erläuterung des generierten Cron-Ausdrucks in Ihrer Eingabeaufforderung bereitzustellen.
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
Copilot wird von KI unterstützt, so dass Überraschungen und Fehler möglich sind. Weitere Informationen finden Sie in den häufig gestellten Fragen zur allgemeinen Verwendung von Copilot.
Ansicht "Geplante Ausführung"
Sie können eine Vorschau der anstehenden geplanten Builds anzeigen, indem Sie im Kontextmenü auf der Pipelinedetailseite für Ihre Pipeline die Option "Geplante Ausführung" auswählen.
Von Bedeutung
In der Ansicht "Geplante Ausführung" werden nur Pipelines angezeigt, die innerhalb von sieben Tagen nach dem aktuellen Datum ausgeführt werden sollen. Wenn Ihr Cron-Zeitplan über ein Intervall länger als 7 Tage verfügt und die nächste Ausführung nach sieben Tagen ab dem aktuellen Datum beginnen soll, wird sie in der Ansicht " Geplante Ausführung " nicht angezeigt.
               
              
            
Nachdem Sie die geplanten Trigger erstellt oder aktualisiert haben, können Sie sie mithilfe der Ansicht " Geplante Ausführung " überprüfen.
               
              
            
In diesem Beispiel werden die geplanten Ausführungen für den folgenden Zeitplan angezeigt.
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
In den Fenstern "Geplant" werden die Zeiten angezeigt, die in die lokale Zeitzone konvertiert wurden, die auf dem Computer zum Navigieren zum Azure DevOps-Portal festgelegt wurde. In diesem Beispiel wird ein Screenshot in der EST-Zeitzone angezeigt.
Hinweis
Wenn Sie den Zeitplan für eine laufende Pipeline aktualisieren, wird die Ansicht " Geplante Ausführung " erst mit dem neuen Zeitplan aktualisiert, nachdem die aktuell ausgeführte Pipeline abgeschlossen ist.
Sie können eine Vorschau der anstehenden geplanten Builds anzeigen, indem Sie im Kontextmenü auf der Pipelinedetailseite für Ihre Pipeline die Option "Geplante Ausführung" auswählen.
               
              
            
Nachdem Sie Ihre geplanten Trigger erstellt oder aktualisiert haben, können Sie diese mithilfe dieser Ansicht überprüfen.
               
              
            
Wird auch ausgeführt, wenn keine Codeänderungen vorhanden sind
Standardmäßig wird Die Pipeline nicht wie geplant ausgeführt, wenn seit der letzten erfolgreichen geplanten Ausführung keine Codeänderungen vorgenommen wurden. Denken Sie beispielsweise daran, dass Sie eine Pipeline für jede Nacht um 19:00 Uhr geplant haben. Während der Wochentage übertragen Sie verschiedene Änderungen an Ihren Code. Die Pipeline wird pro Zeitplan ausgeführt. Während der Wochenenden nehmen Sie keine Änderungen an Ihrem Code vor. Wenn seit der geplanten Ausführung am Freitag keine Codeänderungen vorgenommen wurden, wird die Pipeline während des Wochenendes nicht wie geplant ausgeführt.
Um die Ausführung einer Pipeline zu erzwingen, auch wenn keine Codeänderungen vorhanden sind, können Sie das always Schlüsselwort verwenden.
schedules:
- cron: ...
  ...
  always: true
Wenn Sie die geplante Pipeline nur so konfigurieren möchten, dass sie erstellt wird, wenn seit dem letzten Build eine Änderung aufgetreten ist, überprüfen Sie nur den Zeitplan, wenn sich die Quelle oder Pipeline geändert hat.
               
              
            
Grenzwerte für die Anzahl der geplanten Ausführung in YAML-Pipelines
Es gibt bestimmte Beschränkungen, wie oft Sie eine Pipeline ausführen können. Diese Grenzwerte wurden eingerichtet, um Missbrauch von Azure Pipelines-Ressourcen, insbesondere den von Microsoft gehosteten Agents, zu verhindern. Die Grenzwerte sind:
- ca. 1000 Leitungen pro Woche
- 10 Ausführung pro Pipeline pro 15 Minuten
Migrieren aus dem klassischen Editor
Die folgenden Beispiele zeigen, wie Sie Ihre Zeitpläne aus dem klassischen Editor zu YAML migrieren.
- Beispiel: Nightly Build of Git Repo in mehreren Zeitzonen
- Beispiel: Nachtbau mit unterschiedlichen Frequenzen
Beispiel: Nightly Build of Git Repo in mehreren Zeitzonen
In diesem Beispiel hat der geplante klassische Editorauslöser zwei Einträge, wodurch die folgenden Builds erstellt werden.
- Jeden Montag - Freitag um 3:00 Uhr (UTC + 5:30 Zeitzone), erstellen Sie Verzweigungen, die die Verzweigungsfilterkriterien - features/india/*erfüllen  
- Jeden Montag - Freitag um 3:00 Uhr (UTC - 5:00 Zeitzone), erstellen Sie Verzweigungen, die den Verzweigungsfilterkriterien - features/nc/*entsprechen  
Der entsprechende geplante YAML-Trigger lautet:
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/*
Im ersten Zeitplan, M-F 3:00 Am (UTC + 5:30) Indien täglich Build, ist die Cron-Syntax (mm HH DD MM DW) .30 21 * * Sun-Thu
- Minuten und Stunden - 30 21Dies ist (21:30 UTC9:30 PM UTC) zugeordnet. Da die angegebene Zeitzone im klassischen Editor UTC + 5:30 lautet, müssen wir 5 Stunden und 30 Minuten von der gewünschten Buildzeit von 3:00 Uhr subtrahieren, um zur gewünschten UTC-Zeit einzutreffen, um für den YAML-Trigger anzugeben. Sie können KI-Unterstützung von GitHub Copilot erhalten, um Ihren Cron-Ausdruck zu erstellen.
- Tage und Monate werden als Wildcards angegeben, da dieser Zeitplan nicht an bestimmten Tagen des Monats oder an einem bestimmten Monat ausgeführt werden soll.
- Tage der Woche - Sun-Thuaufgrund der Zeitzonenkonvertierung, für unsere Builds, die um 3:00 Uhr in der UTC + 5:30 Indien Zeitzone ausgeführt werden sollen, müssen wir angeben, dass sie den vorherigen Tag in UTC-Zeit beginnen. Wir könnten auch die Wochentage als0-4oder0,1,2,3,4.
Im zweiten Zeitplan, M-F 3:00 AM (UTC - 5) NC täglich Build, ist 0 8 * * Mon-Fridie Cron-Syntax .
- Minuten und Stunden - 0 8Dies ist zugeordnet8:00 AM UTC. Da die angegebene Zeitzone im klassischen Editor UTC - 5:00 ist, müssen wir 5 Stunden von der gewünschten Buildzeit von 3:00 Uhr hinzufügen, um zur gewünschten UTC-Zeit einzutreffen, um für den YAML-Trigger anzugeben. Sie können KI-Unterstützung von GitHub Copilot erhalten, um Ihren Cron-Ausdruck zu erstellen.
- Tage und Monate werden als Wildcards angegeben, da dieser Zeitplan nicht an bestimmten Tagen des Monats oder an einem bestimmten Monat ausgeführt werden soll.
- Wochentage - Mon-FriDa sich unsere Zeitzonenkonvertierungen nicht über mehrere Wochentage für unseren gewünschten Zeitplan erstrecken, müssen wir hier keine Konvertierung durchführen. Wir könnten auch die Wochentage als1-5oder1,2,3,4,5.
Von Bedeutung
Die UTC-Zeitzonen in geplanten YAML-Triggern berücksichtigen keine Sommerzeit.
Tipp
Bei Verwendung von 3 Buchstaben Tagen der Woche und dem Wunsch einer Spanne von mehreren Tagen bis Sun sollte Sun als erster Tag der Woche betrachtet werden, z. B. für einen Zeitplan von Mitternacht EST, Donnerstag bis Sonntag, ist 0 5 * * Sun,Thu-Satdie Cronsyntax .
Beispiel: Nachtbau mit unterschiedlichen Frequenzen
In diesem Beispiel hat der geplante klassische Editorauslöser zwei Einträge, wodurch die folgenden Builds erstellt werden.
- Jeden Montag - Freitag um 3:00 Uhr UTC erstellen Sie Zweigniederlassungen, die die Kriterien für die - mainVerzweigungsfilter erfüllen.- releases/*  
- Jeden Sonntag um 3:00 Uhr UTC erstellen Sie die - releases/lastversionZweigstelle, auch wenn sich die Quelle oder Pipeline nicht geändert hat.  
Der entsprechende geplante YAML-Trigger lautet:
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
Im ersten Zeitplan, M-F 3:00 AM (UTC) täglichen Build, ist 0 3 * * Mon-Fridie Cron-Syntax .
- Minuten und Stunden - 0 3Dies ist zugeordnet3:00 AM UTC. Da die angegebene Zeitzone im klassischen Editor UTC ist, müssen keine Zeitzonenkonvertierungen ausgeführt werden.
- Tage und Monate werden als Wildcards angegeben, da dieser Zeitplan nicht an bestimmten Tagen des Monats oder an einem bestimmten Monat ausgeführt werden soll.
- Wochentage - Mon-Frida es keine Zeitzonenkonvertierung gibt, die Wochentage direkt aus dem klassischen Editor-Zeitplan. Wir könnten auch die Wochentage angeben als1,2,3,4,5.
Im zweiten Zeitplan, Sonntag, 3:00 Uhr (UTC) wöchentlich neueste Version Build, ist 0 3 * * Sundie Cron-Syntax .
- Minuten und Stunden - 0 3Dies ist zugeordnet3:00 AM UTC. Da die angegebene Zeitzone im klassischen Editor UTC ist, müssen keine Zeitzonenkonvertierungen ausgeführt werden.
- Tage und Monate werden als Wildcards angegeben, da dieser Zeitplan nicht an bestimmten Tagen des Monats oder an einem bestimmten Monat ausgeführt werden soll.
- Wochentage - SunDa sich unsere Zeitzonenkonvertierungen nicht über mehrere Wochentage für unseren gewünschten Zeitplan erstrecken, müssen wir hier keine Konvertierung durchführen. Wir könnten auch die Wochentage angeben als0.
- Außerdem wird angegeben always: true, dass dieser Build ausgeführt werden soll, ob der Quellcode aktualisiert wurde.
Häufig gestellte Fragen
- Ich möchte, dass meine Pipeline nur im Zeitplan ausgeführt wird und nicht, wenn jemand eine Änderung an eine Verzweigung überträgt
- Ich habe einen Zeitplan in der YAML-Datei definiert. Aber es wurde nicht ausgeführt. Was ist passiert?
- Meine YAML-Zeitpläne funktionieren gut. Aber sie funktionieren jetzt nicht mehr. Wie kann ich dies debuggen?
- Mein Code hat sich noch nicht geändert, aber ein geplanter Build wird ausgelöst. Why?
- Die geplante Ausführung wird im Bereich "Geplante Ausführung" angezeigt. Es wird jedoch zu diesem Zeitpunkt nicht ausgeführt. Why?
- In yaML-Pipeline definierte Zeitpläne funktionieren für eine Verzweigung, aber nicht für die andere. Wie kann ich dieses Problem beheben?
Ich möchte, dass meine Pipeline nur im Zeitplan ausgeführt wird und nicht, wenn jemand eine Änderung an eine Verzweigung überträgt
Wenn Ihre Pipeline nur im Zeitplan ausgeführt werden soll und nicht, wenn jemand eine Änderung an eine Verzweigung überträgt oder eine Änderung an der Hauptverzweigung zusammenführt, müssen Sie die Standard-CI- und PR-Trigger für die Pipeline explizit deaktivieren.
Um die standardmäßigen CI- und PR-Trigger zu deaktivieren, fügen Sie der YAML-Pipeline die folgenden Anweisungen hinzu, und stellen Sie sicher, dass Sie die YAML-Pipelinetrigger nicht mit UI-Triggern überschrieben haben.
trigger: none
pr: none
Weitere Informationen finden Sie unter pr-Definition und Triggerdefinition.
Ich habe einen Zeitplan in der YAML-Datei definiert. Aber es wurde nicht ausgeführt. Was ist passiert?
- Überprüfen Sie die nächsten Ausführungen, die Azure-Pipelines für Ihre Pipeline geplant haben. Sie finden diese Ausführungen, indem Sie die Aktion "Geplante Ausführung " in Ihrer Pipeline auswählen. Die Liste wird nach unten gefiltert, um ihnen nur die bevorstehenden Läufe in den nächsten Tagen anzuzeigen. Wenn dies nicht Ihren Erwartungen entspricht, ist es wahrscheinlich der Fall, dass Sie Ihren Cron-Zeitplan falsch eingegeben haben, oder Sie haben den Zeitplan nicht in der richtigen Verzweigung definiert. Lesen Sie das obige Thema, um zu verstehen, wie Zeitpläne konfiguriert werden. Überprüfen Sie die Cronsyntax erneut. Alle Zeiten für Cron-Zeitpläne befinden sich in UTC. 
- Nehmen Sie eine kleine triviale Änderung an Ihrer YAML-Datei vor, und übertragen Sie dieses Update in Ihr Repository. Wenn es ein Problem beim Lesen der Zeitpläne aus der YAML-Datei früher gab, sollte es jetzt behoben werden. 
- Wenn In der Benutzeroberfläche Zeitpläne definiert sind, werden Ihre YAML-Zeitpläne nicht berücksichtigt. Stellen Sie sicher, dass sie keine UI-Zeitpläne haben, indem Sie zum Editor für Ihre Pipeline navigieren und dann Trigger auswählen. 
- Es gibt ein Limit für die Anzahl der Ausführungen, die Sie für eine Pipeline planen können. Weitere Informationen zu Grenzwerten. 
- Wenn es keine Änderungen an Ihrem Code gibt, werden möglicherweise keine neuen Ausführungsläufe von Azure Pipelines gestartet. Erfahren Sie, wie Sie dieses Verhalten außer Kraft setzen . 
Meine YAML-Zeitpläne funktionieren gut. Aber sie funktionieren jetzt nicht mehr. Wie kann ich dies debuggen?
- Wenn Sie dies nicht angegeben - always:truehaben, wird Ihre Pipeline nicht geplant, es sei denn, es werden Aktualisierungen an Ihrem Code vorgenommen. Überprüfen Sie, ob Codeänderungen vorgenommen wurden und wie Sie die Zeitpläne konfiguriert haben.
- Es gibt eine Beschränkung , wie oft Sie Ihre Pipeline planen können. Überprüfen Sie, ob Sie diese Grenzwerte überschritten haben. 
- Überprüfen Sie, ob jemand weitere Zeitpläne in der Benutzeroberfläche aktiviert hat. Öffnen Sie den Editor für Ihre Pipeline, und wählen Sie "Trigger" aus. Wenn sie Zeitpläne in der Benutzeroberfläche definiert haben, werden Ihre YAML-Zeitpläne nicht berücksichtigt. 
- Überprüfen Sie, ob Die Pipeline angehalten oder deaktiviert ist. Wählen Sie "Einstellungen " für Ihre Pipeline aus. 
- Überprüfen Sie die nächsten Ausführungen, die Azure-Pipelines für Ihre Pipeline geplant haben. Sie finden diese Ausführungen, indem Sie die Aktion "Geplante Ausführung " in Ihrer Pipeline auswählen. Wenn die erwarteten Zeitpläne nicht angezeigt werden, nehmen Sie eine kleine triviale Änderung an Ihrer YAML-Datei vor, und übertragen Sie das Update an Ihr Repository. Dies sollte die Zeitpläne neu synchronisieren. 
- Wenn Sie GitHub zum Speichern Ihres Codes verwenden, ist es möglich, dass Azure-Pipelines möglicherweise von GitHub gedrosselt wurden, wenn versucht wurde, eine neue Ausführung zu starten. Überprüfen Sie, ob Sie eine neue Ausführung manuell starten können. 
Mein Code hat sich noch nicht geändert, aber ein geplanter Build wird ausgelöst. Why?
- Möglicherweise haben Sie eine Option aktiviert, um immer einen geplanten Build auszuführen, auch wenn keine Codeänderungen vorhanden sind. Wenn Sie eine YAML-Datei verwenden, überprüfen Sie die Syntax für den Zeitplan in der YAML-Datei. Wenn Sie klassische Pipelines verwenden, überprüfen Sie, ob Sie diese Option in den geplanten Triggern aktiviert haben. 
- Möglicherweise haben Sie die Buildpipeline oder eine Eigenschaft der Pipeline aktualisiert. Dies führt dazu, dass eine neue Ausführung geplant wird, auch wenn Sie den Quellcode nicht aktualisiert haben. Überprüfen Sie den Verlauf der Änderungen in der Pipeline mithilfe des klassischen Editors. 
- Möglicherweise haben Sie die Dienstverbindung aktualisiert, die zum Herstellen einer Verbindung mit dem Repository verwendet wird. Dies führt dazu, dass eine neue Ausführung geplant wird, auch wenn Sie den Quellcode nicht aktualisiert haben. 
- Azure Pipelines überprüft zuerst, ob Updates für Ihren Code vorhanden sind. Wenn Azure Pipelines Ihr Repository nicht erreichen oder diese Informationen abrufen kann, wird eine Informationsausführung erstellt. Es ist ein Dummy-Build, um Sie darüber zu informieren, dass Azure Pipelines Ihr Repository nicht erreichen kann. 
- Ihre Pipeline verfügt möglicherweise nicht über einen vollständig erfolgreichen Build. Um festzustellen, ob ein neuer Build geplant werden soll oder nicht, sucht Azure DevOps den letzten vollständig erfolgreichen geplanten Build. Wenn es keinen gefunden hat, löst es einen neuen geplanten Build aus. Teilweise erfolgreiche geplante Builds werden nicht als erfolgreich betrachtet. Wenn Ihre Pipeline also nur teilweise erfolgreiche Builds aufweist, löst Azure DevOps geplante Builds aus, auch wenn sich Ihr Code nicht geändert hat. 
Die geplante Ausführung wird im Bereich "Geplante Ausführung" angezeigt. Es wird jedoch zu diesem Zeitpunkt nicht ausgeführt. Why?
- Im Bereich "Geplante Ausführung " werden alle potenziellen Zeitpläne angezeigt. Es kann jedoch nicht tatsächlich ausgeführt werden, es sei denn, Sie haben echte Aktualisierungen am Code vorgenommen. Um die Ausführung eines Zeitplans zu erzwingen, stellen Sie sicher, dass Sie die Eigenschaft immer in der YAML-Pipeline festgelegt haben, oder aktivieren Sie die Option, immer in einer klassischen Pipeline auszuführen.
In yaML-Pipeline definierte Zeitpläne funktionieren für eine Verzweigung, aber nicht für die andere. Wie kann ich dieses Problem beheben?
Zeitpläne werden in YAML-Dateien definiert, und diese Dateien sind Verzweigungen zugeordnet. Wenn eine Pipeline für eine bestimmte Verzweigung geplant werden soll, sagen features/XSie, stellen Sie sicher, dass die YAML-Datei in dieser Verzweigung den cron-Zeitplan darin definiert hat und dass sie über die richtigen Verzweigungseinschlüsse für den Zeitplan verfügt. Die YAML-Datei in der features/X Verzweigung sollte folgendes in diesem Beispiel aufweisen schedule :
schedules: 
- cron: '0 12 * * 0'   # replace with your schedule
  branches: 
    include: 
    - features/X  
Weitere Informationen finden Sie unter Branch-Überlegungen für geplante Trigger.