Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Automatisieren Sie das Starten von Pipelines mithilfe von Triggern und Filtern
Mit Triggern können Sie Ihre Pipeline so konfigurieren, dass sie bei einem bestimmten Ereignistyp oder einem gefilterten Ereignistyp startet, z. B. wenn eine Änderung an einem bestimmten Branch oder einer Pull-Anforderung erkannt wird. Trigger können für Quellaktionen mit Verbindungen konfiguriert werden, die die CodeStarSourceConnection Aktion in verwenden CodePipeline GitHub, wie Bitbucket und GitLab. Weitere Informationen zu Quellaktionen, die Verbindungen verwenden, findest du unterFügen Sie externe Quellanbieter zu Pipelines hinzu mit CodeConnections.
Quellaktionen wie CodeCommit und S3 verwenden die automatische Änderungserkennung, um Pipelines zu starten, wenn eine Änderung vorgenommen wird. Weitere Informationen finden Sie unter CodeCommit Quellaktionen und EventBridge.
Sie geben Trigger über die Konsole oder CLI an.
Sie geben Filtertypen wie folgt an:
-
Kein Filter
Diese Trigger-Konfiguration startet Ihre Pipeline bei jedem Push zu dem Standardzweig, der als Teil der Aktionskonfiguration angegeben wurde.
-
Filter angeben
Sie fügen einen Filter hinzu, der Ihre Pipeline mit einem bestimmten Filter startet, z. B. bei Branch-Namen für einen Code-Push, und den exakten Commit abruft. Dadurch wird die Pipeline auch so konfiguriert, dass sie bei jeder Änderung nicht automatisch gestartet wird.
-
Push
-
Gültige Filterkombinationen sind:
-
Git-Tags
Einschließen oder Ausschließen
-
Filialen
Einschließen oder Ausschließen
-
Zweige + Dateipfade
Einschließen oder Ausschließen
-
-
-
Pull-Anfrage
-
Gültige Filterkombinationen sind:
-
Zweige
Einschließen oder Ausschließen
-
Zweige + Dateipfade
Einschließen oder Ausschließen
-
-
-
-
Erkennt keine Änderungen
Dadurch wird kein Trigger hinzugefügt und die Pipeline wird bei jeder Änderung nicht automatisch gestartet.
Die folgende Tabelle enthält gültige Filteroptionen für jeden Ereignistyp. Die Tabelle zeigt auch, welche Triggerkonfigurationen für die automatische Erkennung von Änderungen in der Aktionskonfiguration standardmäßig auf „true“ oder „false“ gesetzt sind.
| Konfiguration des Triggers | Ereignistyp | Filteroptionen | Ermitteln Sie Änderungen |
|---|---|---|---|
| Einen Auslöser hinzufügen — kein Filter | Keine | Keine | true |
| Einen Auslöser hinzufügen — Filter bei Code-Push | Ereignis pushen | Git-Tags, Zweige, Dateipfade | false |
| Füge einen Trigger hinzu — Filter für Pull-Requests | Pull-Anfragen | Zweige, Dateipfade | false |
| Kein Auslöser — nicht erkennen | Keine | Keine | false |
Anmerkung
Dieser Triggertyp verwendet die automatische Änderungserkennung (als Webhook Triggertyp). Die Anbieter von Quellaktionen, die diesen Triggertyp verwenden, sind Verbindungen, die für Code-Push konfiguriert sind (Bitbucket Cloud GitHub, GitHub Enterprise Server, GitLab .com und GitLab selbstverwaltet).
Felddefinitionen und weitere Hinweise zu Triggern findest du unter
Eine Liste der Felddefinitionen in der JSON-Struktur finden Sie untertriggers.
Für die Filterung werden Muster regulärer Ausdrücke im Glob-Format unterstützt, wie unter beschriebenArbeiten mit Glob-Mustern in der Syntax.
Anmerkung
In bestimmten Fällen startet die Pipeline bei Pipelines mit Triggern, die nach Dateipfaden gefiltert werden, möglicherweise nicht, wenn ein Zweig mit einem Dateipfadfilter zum ersten Mal erstellt wird. Weitere Informationen finden Sie unter Pipelines mit Verbindungen, die Triggerfilterung nach Dateipfaden verwenden, beginnen möglicherweise nicht bei der Branch-Erstellung.
Überlegungen zu Triggerfiltern
Die folgenden Überlegungen gelten für die Verwendung von Triggern.
-
Sie können nicht mehr als einen Trigger pro Quellaktion hinzufügen.
-
Sie können einem Trigger mehrere Filtertypen hinzufügen. Ein Beispiel finden Sie unter 4: Ein Trigger mit zwei Push-Filtertypen mit widersprüchlichen Ein- und Ausschlüssen.
-
Bei einem Trigger mit Verzweigungs- und Dateipfadfiltern wird die Pipeline nicht ausgeführt, wenn der Branch zum ersten Mal übertragen wird, da kein Zugriff auf die Liste der Dateien besteht, die für den neu erstellten Branch geändert wurden.
-
Das Zusammenführen einer Pull-Anfrage kann in Fällen, in denen sich die Triggerkonfigurationen Push (Branches Filter) und Pull Request (Branches Filter) überschneiden, zwei Pipeline-Ausführungen auslösen.
-
Bei einem Filter, der Ihre Pipeline bei Pull-Request-Ereignissen auslöst, hat der Drittanbieter-Repository-Anbieter für Ihre Verbindung beim Pull-Request-Ereignistyp „Geschlossen“ möglicherweise einen separaten Status für ein Merge-Ereignis. In Bitbucket ist das Git-Ereignis für eine Zusammenführung beispielsweise kein Pull-Request-Schließungsereignis. In GitHub ist das Zusammenführen einer Pull-Anfrage jedoch ein Abschlussereignis. Weitere Informationen finden Sie unter Pull-Request-Ereignisse für Trigger nach Anbieter.
-
Wenn mehrere Quellaktionen in einer Pipeline über eine Verbindung auf verschiedene Zweige desselben Repositorys verweisen, löst nur ein Zweig zuverlässig die Pipeline aus. Das Webhook-Abonnement der Verbindung ist für die Kombination aus Pipeline und Repository registriert, nicht pro Zweig. Um das Problem zu umgehen, verwenden Sie für jeden Zweig eine separate Pipeline.
Pull-Request-Ereignisse für Trigger nach Anbieter
Die folgende Tabelle enthält eine Zusammenfassung der Git-Ereignisse, z. B. für das Schließen von Pull-Requests, die zu Pull-Request-Ereignistypen nach Anbietern führen.
| Repository-Anbieter für Ihre Verbindung | ||||
|---|---|---|---|---|
| PR-Ereignis für Trigger | Bitbucket | GitHub | JA | GitLab |
| Öffnen — Diese Option löst die Pipeline aus, wenn eine Pull-Anfrage für den Branch-/Dateipfad erstellt wird. | Das Erstellen einer Pull-Anfrage führt zu einem Opened Git-Ereignis. | Das Erstellen einer Pull-Anfrage führt zu einem Opened Git-Ereignis. | Das Erstellen einer Pull-Anfrage führt zu einem Opened Git-Ereignis. | Das Erstellen einer Pull-Anfrage führt zu einem Opened Git-Ereignis. |
| Update — Diese Option löst die Pipeline aus, wenn eine Pull-Request-Revision für den Branch-/Dateipfad veröffentlicht wird. | Die Veröffentlichung eines Updates führt zu einem aktualisierten Git-Ereignis. | Die Veröffentlichung eines Updates führt zu einem aktualisierten Git-Ereignis. | Die Veröffentlichung eines Updates führt zu einem aktualisierten Git-Ereignis. | Die Veröffentlichung eines Updates führt zu einem aktualisierten Git-Ereignis. |
| Geschlossen — Diese Option löst die Pipeline aus, wenn eine Pull-Anfrage für den branch/file Pfad geschlossen wird. | Das Zusammenführen einer Pull-Anfrage in Bitbucket führt zu einem Closed-Git-Event. Wichtig: Das manuelle Schließen einer Pull-Anfrage in Bitbucket ohne Zusammenführung führt nicht zu einem Closed Git-Ereignis. | Das Zusammenführen oder manuelles Schließen einer Pull-Anfrage führt zu einem Closed-Git-Ereignis. | Das Zusammenführen oder manuelles Schließen einer Pull-Anfrage führt zu einem Closed-Git-Ereignis. | Das Zusammenführen oder manuelles Schließen einer Pull-Anfrage führt zu einem Closed-Git-Ereignis. |
Beispiele für Triggerfilter
Bei einer Git-Konfiguration mit Filtern für Push- und Pull-Request-Ereignistypen können die angegebenen Filter miteinander in Konflikt geraten. Im Folgenden finden Sie Beispiele für gültige Filterkombinationen für Push- und Pull-Request-Ereignisse. Ein Trigger kann mehrere Filtertypen enthalten, z. B. zwei Push-Filtertypen in der Trigger-Konfiguration, und die Push- und Pull-Request-Filtertypen verwenden eine OR-Operation zwischen ihnen, was bedeutet, dass bei jeder Übereinstimmung die Pipeline gestartet wird. Ebenso kann jeder Filtertyp mehrere Filter wie FilePaths und Branches enthalten. Diese Filter verwenden eine AND-Operation, was bedeutet, dass nur eine vollständige Übereinstimmung die Pipeline startet. Jeder Filtertyp kann Einschlüsse und Ausschlüsse enthalten, wobei Ausschlüsse Vorrang vor Einschlüssen haben. Wenn ein Zweig- oder Dateipfad einem Ausschlussmuster entspricht, wird die Pipeline nicht ausgelöst, auch wenn er auch einem Include-Muster entspricht. Wenn ein Commit mehrere Dateien ändert, wird jede Datei unabhängig anhand des Filters bewertet. Wenn eine geänderte Datei erfolgreich ist (entspricht einem Include-Wert und entspricht nicht einem Exclude-Wert), wird die Pipeline gestartet. Namen innerhalb des Einschließen/Ausschließens, wie z. B. Zweignamen, verwenden eine OR-Operation. Die folgende Liste fasst die Operationen für jeden Teil des Git-Konfigurationsobjekts zusammen.
Eine Liste der Felddefinitionen in der JSON-Struktur und eine ausführliche Referenz zu Ein- und Ausschlüssen finden Sie unter. triggers
Beispiel 1: Ein Filtertyp mit Filtern für Verzweigungen und Dateipfade (UND-Operation)
Für einen einzelnen Filtertyp, z. B. eine Pull-Anfrage, können Sie Filter kombinieren. Diese Filter verwenden eine AND-Operation, was bedeutet, dass nur eine vollständige Übereinstimmung die Pipeline startet. Das folgende Beispiel zeigt eine Git-Konfiguration für einen Push-Ereignistyp mit zwei verschiedenen Filtern (filePathsundbranches). Im folgenden Beispiel filePaths wird AND-verknüpft mit: branches
{ "filePaths": { "includes": ["common/**/*.js"] }, "branches": { "includes": ["feature/**"] } }
Mit der obigen Git-Konfiguration zeigt dieses Beispiel ein Ereignis, das die Pipeline-Ausführung startet, weil die AND-Operation erfolgreich ist. Mit anderen Worten, der Dateipfad common/app.js ist für den Filter enthalten, der die Pipeline als AND startet, auch wenn der refs/heads/feature/triggers angegebene Zweig keine Auswirkung hatte.
{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "common/app.js" ] ... } ] }
Das folgende Beispiel zeigt ein Ereignis für einen Trigger mit der obigen Konfiguration, der die Pipeline-Ausführung nicht startet, da der Zweig filtern kann, der Dateipfad jedoch nicht.
{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "src/Main.java" ] ... } ] }
Beispiel 2: Ausschlüsse haben Vorrang vor Einschlüssen
Innerhalb eines einzelnen Filters haben Ausschlüsse Vorrang vor Einschlüssen. Das folgende Beispiel zeigt eine Git-Konfiguration mit einem einzigen Filter (branches) innerhalb des Konfigurationsobjekts. Das heißt, wenn ein Branch einem Ausschlussmuster entspricht (feature-branchim Beispiel), wird die Pipeline nicht ausgelöst, auch wenn sie auch einem Include-Muster entspricht. Wenn das Include-Muster übereinstimmt und kein Ausschlussmuster übereinstimmt, z. B. für den main Branch, dann wird die Pipeline ausgelöst.
Für das folgende JSON-Beispiel:
-
Wenn ein Commit an den
mainBranch gesendet wird, wird die Pipeline ausgelöst -
Wenn ein Commit an den
feature-branchBranch weitergeleitet wird, wird die Pipeline nicht ausgelöst.
{ "branches": { "Includes": [ "main" ], "Excludes": [ "feature-branch" ] }
Beispiel 3: Ein Trigger mit Push- und Pull-Request-Filtertypen (OR-Operation), Filtern für Dateipfade und Branches (AND-Operation) und includes/excludes (Ausschlüsse haben Vorrang)
Trigger-Konfigurationsobjekte, wie z. B. ein Trigger, der einen Push-Ereignistyp und einen Pull-Request-Ereignistyp enthält, verwenden eine OR-Operation zwischen den beiden Ereignistypen. Das folgende Beispiel zeigt eine Trigger-Konfiguration mit einem Push-Ereignistyp, bei dem der main Branch eingeschlossen ist, und einem Pull-Request-Ereignistyp, bei dem derselbe Branch main ausgeschlossen ist. Darüber hinaus ist beim Push-Ereignistyp ein Dateipfad LICENSE.txt ausgeschlossen und ein Dateipfad README.MD enthalten. Beim zweiten Ereignistyp startet eine Pull-Anfrage, die sich entweder Created auf Closed oder auf dem feature-branch Branch (eingeschlossen) befindet, die Pipeline, und die Pipeline startet nicht, wenn eine Pull-Anfrage in den main Zweigen feature-branch-2 oder geschlossen wird (ausgeschlossen). Innerhalb jedes Ereignistyps haben Ausschlüsse Vorrang vor Einschlüssen. Beispiel: Bei einem Pull-Request-Ereignis im feature-branch Branch (das in der Pull-Anfrage enthalten ist) schließt der Push-Ereignistyp den feature-branch Branch aus, sodass der Push die Pipeline nicht auslöst.
Für das folgende Beispiel
-
Wenn Sie einen Commit für den
README.MDDateipfad (im Lieferumfang enthalten) an denmainBranch (im Lieferumfang enthalten) weiterleiten, wird die Pipeline ausgelöst. -
Beim
feature-branchBranch (ausgeschlossen) wird durch das Pushen eines Commits die Pipeline nicht ausgelöst. -
Im eingeschlossenen Branch löst die Bearbeitung des
README.MDDateipfads (im Lieferumfang enthalten) die Pipeline aus. -
Im eingeschlossenen Zweig wird die Pipeline nicht ausgelöst, wenn nur der
LICENSE.TXTDateipfad (ausgeschlossen) bearbeitet wird. Wenn sich derselbe Commit jedoch ebenfalls ändertREADME.MD(eingeschlossen), wird die Pipeline ausgelöst, da jede Datei unabhängig ausgewertet wird. -
Auf dem
feature-branchBranch löst das Schließen einer Pull-Anfrage die Pipeline aus, da sie für den Pull-Request-Ereignistyp enthaltenfeature-branchist und der Ereignistyp CLOSED übereinstimmt.
Die folgende Abbildung zeigt die Konfiguration.
Im Folgenden finden Sie ein JSON-Beispiel für die Konfiguration.
"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "branches": { "includes": [ "main" ], "excludes": [ "feature-branch", "feature-branch-2" ] }, "filePaths": { "includes": [ "README.md" ], "excludes": [ "LICENSE.txt" ] } } ], "pullRequest": [ { "events": [ "CLOSED", "OPEN" ], "branches": { "includes": [ "feature-branch" ], "excludes": [ "feature-branch-2", "main" ] } } ] } } ] },
Beispiel 4: Ein Trigger mit zwei Push-Filtertypen mit widersprüchlichen Ein- und Ausschlüssen
Die folgende Abbildung zeigt einen Push-Filtertyp, der angibt, dass nach dem Tag gefiltert werden soll release-1 (im Lieferumfang enthalten). Ein zweiter Push-Filtertyp wird hinzugefügt, der angibt, dass nach dem Zweig gefiltert werden soll main (im Lieferumfang enthalten) und bei einem Push zu den feature* Branches (ausgeschlossen) nicht gestartet werden soll.
Bei folgendem Beispiel:
-
Wenn ein Release vom Tag
release-1(für den ersten Push-Filter enthalten) auf denfeature-branchBranch übertragen wird (ausgenommen wiefeature*beim zweiten Push-Filter), wird die Pipeline ausgelöst, da die beiden Push-Filtertypen eine ODER-Operation zwischen ihnen verwenden und der erste Push-Filter (Tagrelease-1) übereinstimmt. -
Durch das Pushen eines Releases aus dem
mainBranch (im zweiten Push-Filter enthalten) wird die Pipeline gestartet.
Das folgende Beispiel für die Bearbeitungsseite zeigt die beiden Push-Filtertypen und ihre Konfiguration für Ein- und Ausschlüsse.
Im Folgenden finden Sie ein JSON-Beispiel für die Konfiguration.
"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "release-1" ] } }, { "branches": { "includes": [ "main*" ], "excludes": [ "feature*" ] } } ] } } ] },
Beispiel 5: Der Trigger wurde konfiguriert, während die Standardaktionskonfiguration für einen manuellen Start verwendet BranchName wird
Das BranchName Standardfeld für die Aktionskonfiguration definiert einen einzelnen Zweig, der verwendet wird, wenn die Pipeline manuell gestartet wird, wohingegen Trigger mit Filtern für alle von Ihnen angegebenen Verzweigungen verwendet werden können.
Im Folgenden finden Sie das JSON-Beispiel für die Aktionskonfiguration, in der das BranchName Feld angezeigt wird.
{ "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "CodeStarSourceConnection", "version": "1" }, "runOrder": 1, "configuration": { "BranchName": "main", "ConnectionArn": "ARN", "DetectChanges": "false", "FullRepositoryId": "owner-name/my-bitbucket-repo", "OutputArtifactFormat": "CODE_ZIP" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "inputArtifacts": [], "region": "us-west-2", "namespace": "SourceVariables" } ],
Das folgende Beispiel für eine Aktionsausgabe zeigt, dass der Standardzweig main verwendet wurde, als die Pipeline manuell gestartet wurde.
Die folgende Beispiel-Aktionsausgabe zeigt die Pull-Anfrage und den Branch, die für den Trigger verwendet wurden, wenn sie nach einer Pull-Anfrage gefiltert wurden.