So funktionieren Pipeline-Ausführungen - AWS CodePipeline

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.

So funktionieren Pipeline-Ausführungen

Dieser Abschnitt bietet einen Überblick über die Art und Weise, wie eine Reihe von Änderungen CodePipeline verarbeitet werden. CodePipelineverfolgt jede Pipeline-Ausführung, die beginnt, wenn eine Pipeline manuell gestartet oder eine Änderung am Quellcode vorgenommen wird. CodePipeline verwendet die folgenden Ausführungsmodi, um die Art und Weise zu handhaben, wie jede Ausführung durch die Pipeline voranschreitet.

  • SUPERSEDEDModus: Eine neuere Ausführung kann eine ältere überholen. Dies ist die Standardeinstellung.

  • QUEUEDModus: Ausführungen werden nacheinander in der Reihenfolge verarbeitet, in der sie sich in der Warteschlange befinden. Dies erfordert den Pipeline-Typ V2.

  • PARALLELModus: Im PARALLEL Modus werden Ausführungen gleichzeitig und unabhängig voneinander ausgeführt. Ausführungen warten nicht darauf, dass andere Läufe abgeschlossen sind, bevor sie gestartet oder beendet werden. Dies erfordert den Pipeline-Typ V2.

So werden Pipeline-Ausführungen gestartet

Sie können eine Ausführung starten, wenn Sie Ihren Quellcode ändern, oder Sie können die Pipeline manuell starten. Sie können eine Ausführung auch über eine von Ihnen geplante Amazon CloudWatch Events-Regel auslösen. Wenn beispielsweise eine Quellcodeänderung per Push zu einem Repository übertragen wird, das als Quellaktion der Pipeline konfiguriert ist, erkennt die Pipeline die Änderung und startet eine Ausführung.

Anmerkung

Wenn eine Pipeline mehrere Quellaktionen enthält, werden alle erneut ausgeführt, auch wenn nur für eine Quellaktion eine Änderung entdeckt wird.

Wie Quellversionen in Pipeline-Ausführungen verarbeitet werden

Für jede Pipeline-Ausführung, die mit Änderungen am Quellcode (Quellrevisionen) beginnt, werden Quellversionen wie folgt bestimmt.

  • Bei Pipelines mit einer CodeCommit Quelle HEAD wird die in dem Moment geklont, CodePipeline in dem der Commit übertragen wird. Beispielsweise wird ein Commit per Push übertragen, wodurch die Pipeline für Ausführung 1 gestartet wird. In dem Moment, in dem ein zweiter Commit übertragen wird, wird die Pipeline für Ausführung 2 gestartet.

    Anmerkung

    Bei Pipelines im PARALLEL Modus mit einer CodeCommit Quelle klont die Quellaktion unabhängig vom Commit, das die Pipeline-Ausführung ausgelöst hat, immer zum HEAD Zeitpunkt des Starts. Weitere Informationen finden Sie unter CodeCommit oder S3-Quellversionen im PARALLEL Modus stimmen möglicherweise nicht mit dem Ereignis überein EventBridge .

  • Für Pipelines mit einer S3-Quelle wird das EventBridge Ereignis für das S3-Bucket-Update verwendet. Das Ereignis wird beispielsweise generiert, wenn eine Datei im Quell-Bucket aktualisiert wird, wodurch die Pipeline für Ausführung 1 gestartet wird. In dem Moment, in dem das Ereignis für ein zweites Bucket-Update ausgelöst wird, wird damit die Pipeline für Ausführung 2 gestartet.

    Anmerkung

    Bei Pipelines im PARALLEL Modus mit einer S3-Quelle beginnt die Quellaktion unabhängig vom Image-Tag, das die Ausführung ausgelöst hat, immer mit dem neuesten Image-Tag. Weitere Informationen finden Sie unter CodeCommit oder S3-Quellversionen im PARALLEL Modus stimmen möglicherweise nicht mit dem Ereignis überein EventBridge .

  • Bei Pipelines mit einer Verbindungsquelle, z. B. zu Bitbucket, HEAD wird die in dem Moment geklont, CodePipeline in dem der Commit übertragen wird. Bei einer Pipeline im PARALLEL Modus wird beispielsweise ein Commit per Push übertragen, wodurch die Pipeline für Ausführung 1 gestartet wird, und die zweite Pipeline-Ausführung verwendet den zweiten Commit.

Pipeline-Ausführungen beenden

Um die Konsole zum Beenden einer Pipeline-Ausführung zu verwenden, können Sie Stop execution (Ausführung beenden) auf der Seite mit der Pipeline-Visualisierung, auf der Seite mit dem Ausführungsverlauf oder auf der Seite mit dem detaillierten Verlauf auswählen. CLIUm die Ausführung einer Pipeline zu beenden, verwenden Sie den stop-pipeline-execution Befehl. Weitere Informationen finden Sie unter Stoppen Sie eine Pipeline-Ausführung in CodePipeline.

Es gibt zwei Möglichkeiten, eine Pipeline-Ausführung anzuhalten:

  • Anhalten und warten: Alle laufenden Aktionsausführungen dürfen abgeschlossen werden, und nachfolgende Aktionen werden nicht gestartet. Die Pipeline-Ausführung wird nicht in den nachfolgenden Phasen fortgesetzt. Sie können diese Option nicht für eine Ausführung verwenden, die sich bereits in einem Stopping-Status befindet.

  • Anhalten und beenden: Alle laufenden Aktionsausführungen werden angehalten und nicht abgeschlossen, und nachfolgende Aktionen werden nicht begonnen. Die Pipeline-Ausführung wird nicht in den nachfolgenden Phasen fortgesetzt. Sie können diese Option bei einer Ausführung verwenden, die sich bereits in einem Stopping-Status befindet.

    Anmerkung

    Diese Option kann zu fehlgeschlagenen oder nicht aufeinander folgenden Aufgaben führen.

Jede Option führt zu einer anderen Abfolge von Pipeline- und Aktionsausführungsphasen:

Option 1: Anhalten und warten

Wenn Sie sich für das Anhalten und Warten entscheiden, wird die ausgewählte Ausführung fortgesetzt, bis die laufenden Aktionen abgeschlossen sind. Beispielsweise wurde die folgende Pipeline-Ausführung angehalten, während die Build-Aktion lief.

  1. In der Pipeline-Ansicht wird das Banner für Erfolgsmeldungen angezeigt, und die Build-Aktion wird fortgesetzt, bis sie abgeschlossen ist. Der Status der Pipeline-Ausführung ist Stopping (Wird angehalten).

    In der Verlaufsansicht ist der Status für laufende Aktionen, wie z. B. die Build-Aktion, In progress (In Bearbeitung), bis die Build-Aktion abgeschlossen ist. Während die Aktionen in Bearbeitung sind, ist der Status der Pipeline-Ausführung Stopping (Wird angehalten).

  2. Die Ausführung wird angehalten, wenn der Anhaltevorgang abgeschlossen ist. Wenn die Build-Aktion erfolgreich abgeschlossen ist, hat sie den Status Succeeded (Erfolgreich abgeschlossen), und die Pipeline-Ausführung zeigt den Status Stopped (Angehalten). Nachfolgende Aktionen werden nicht gestartet. Die Schaltfläche Retry (Wiederholen) ist aktiviert.

    In der Verlaufsansicht wird der Ausführungsstatus Stopped (Beendet) angezeigt, nachdem die laufende Aktion abgeschlossen ist.

    Das Bild zeigt die Verlaufsansicht, in der der Ausführungsstatus „Beendet“ lautet, nachdem die laufende Aktion abgeschlossen wurde

Option 2: Anhalten und beenden

Wenn Sie sich zum Anhalten und Beenden entscheiden, wartet die ausgewählte Ausführung nicht auf den Abschluss der laufenden Aktionen. Die Aktionen werden beendet. Beispielsweise wurde die folgende Pipeline-Ausführung angehalten und beendet, während die Build-Aktion lief.

  1. In der Pipeline-Ansicht wird die Erfolgsbanner-Meldung angezeigt, die Build-Aktion zeigt den Status In progress (In Bearbeitung) und die Pipeline-Ausführung den Status Stopping (Wird angehalten).

  2. Nachdem die Pipeline-Ausführung beendet wurde, zeigt die Build-Aktion den Status Abandoned (Beendet) und die Pipeline-Ausführung den Status Stopped (Angehalten) an. Nachfolgende Aktionen werden nicht gestartet. Die Schaltfläche Retry (Wiederholen) ist aktiviert.

  3. In der Verlaufsansicht ist der Ausführungsstatus Stopped (Beendet).

Nutzungsszenarien zum Beenden einer Pipeline-Ausführung

Wir empfehlen Ihnen, die Option „Anhalten und warten“ zu verwenden, um eine Pipeline-Ausführung zu beenden. Diese Option ist sicherer, da sie mögliche Fehlschläge oder out-of-sequence Aufgaben in Ihrer Pipeline vermeidet. Wenn eine Aktion abgebrochen wird CodePipeline, setzt der Aktionsanbieter alle Aufgaben im Zusammenhang mit der Aktion fort. Im Fall einer AWS CloudFormation Aktion wird die Bereitstellungsaktion in der Pipeline abgebrochen, aber das Stack-Update wird möglicherweise fortgesetzt und führt zu einem fehlgeschlagenen Update.

Ein Beispiel für aufgegebene Aktionen, die zu out-of-sequence Aufgaben führen können: Wenn Sie eine große Datei (1 GB) über eine S3-Bereitstellungsaktion bereitstellen und die Aktion beenden und abbrechen möchten, während die Bereitstellung bereits läuft, wird die Aktion in Amazon S3 abgebrochen CodePipeline, aber in Amazon S3 fortgesetzt. Amazon S3 erhält keine Anweisung, den Upload abzubrechen. Wenn Sie anschließend eine neue Pipeline-Ausführung mit einer sehr kleinen Datei starten, sind jetzt zwei Bereitstellungen im Gange. Da die Dateigröße der neuen Ausführung gering ist, wird die neue Bereitstellung abgeschlossen, während die alte Bereitstellung noch hochgeladen wird. Wenn die alte Bereitstellung abgeschlossen ist, wird die neue Datei durch die alte Datei überschrieben.

Sie können die Option zum Anhalten und Beenden verwenden, wenn Sie eine benutzerdefinierte Aktion haben. Sie können beispielsweise eine benutzerdefinierte Aktion abbrechen, deren Arbeit nicht abgeschlossen werden muss, bevor Sie eine neue Ausführung zur Behebung eines Fehlers starten.

Wie werden Ausführungen im SUPERSEDED Modus verarbeitet

Der Standardmodus für die Verarbeitung von Ausführungen ist SUPERSEDED Modus. Eine Ausführung besteht aus einer Reihe von Änderungen, die von der Ausführung aufgenommen und verarbeitet werden. Pipelines können mehrere Ausführungen gleichzeitig verarbeiten. Jede Ausführung wird in der Pipeline getrennt ausgeführt. Die Pipeline verarbeitet die einzelnen Ausführung der Reihe nach und ersetzt möglicherweise frühere Ausführungen durch spätere Ausführungen. Die folgenden Regeln werden verwendet, um Ausführungen in einer Pipeline für SUPERSEDED den Modus zu verarbeiten.

Regel 1: Phasen werden gesperrt, wenn eine Ausführung verarbeitet wird

Da jede Phase jeweils nur eine Ausführung verarbeiten kann, ist eine Phase während der Verarbeitung einer Ausführung gesperrt. Wenn die Ausführung eine Phase abgeschlossen hat, wechselt sie zur nächsten Phase in der Pipeline.

Das Bild zeigt die Phasen, die während der Ausführung gesperrt wurden
Vorher: Stage 1 is locked as Execution 1 enters. Nachher: Stage 2 is locked as Execution 1 enters.

Regel 2: Nachfolgende Ausführungen warten, bis die jeweilige Phase freigegeben wird

Wenn eine Phase gesperrt ist, warten nachfolgende Ausführungen vor der gesperrten Phase. Alle für eine Phase konfigurierten Aktionen müssen erfolgreich abgeschlossen sein, bevor die Phase als abgeschlossen gilt. Eine fehlgeschlagene Ausführung löst die Sperre der Phase auf. Wenn eine Ausführung beendet wird, wird die Ausführung in einer Phase nicht fortgesetzt und die Phase wird freigegeben.

Anmerkung

Bevor Sie eine Ausführung beenden, empfehlen wir Ihnen, den Übergang vor der Phase zu deaktivieren. Auf diese Weise wird die Phase aufgrund der angehaltenen Ausführung entsperrt und akzeptiert keine nachfolgende Pipeline-Ausführung.

Das Bild zeigt, wie die Ausführung im Wartemodus zwischen den Phasen wartet, wenn Phase 2 gesperrt ist
Vorher: Stage 2 is locked as Execution 1 enters. Nachher: Execution 2 exits Stage 1 and waits between stages.

Regel 3: Wartende Ausführungen werden durch neuere Ausführungen ersetzt

Ausführungen werden nur zwischen den Phasen ersetzt. Wenn eine Phase gesperrt ist, wartet eine nachfolgende Ausführung am Eingangspunkt der Phase, bis die Phase abgeschlossen ist. Eine neuere Ausführung holt eine wartende Ausführung ein und fährt zur nächsten Phase fort, sobald die Phase freigegeben wird. Die ersetzte Ausführung wird nicht fortgesetzt. In diesem Beispiel wurde Ausführung 2 durch Ausführung 3 ersetzt, während sie auf die Freigabe der gesperrten Phase wartet. Ausführung 3 tritt in die nächste Phase ein.

Das Bild zeigt, wie die Ausführung im Wartezustand durch Ausführung 3 ersetzt wird

Vorher: Ausführung 2 wartet zwischen den Phasen, während Ausführung 3 in Phase 1 eintritt. Nachher: Ausführung 3 beendet Stufe 1. Ausführung 2 wird durch Ausführung 3 ersetzt.

Weitere Hinweise zu Überlegungen beim Anzeigen und Wechseln zwischen Ausführungsmodi finden Sie unter. Legen Sie den Pipeline-Ausführungsmodus fest oder ändern Sie ihn Weitere Informationen zu Kontingenten mit Ausführungsmodi finden Sie unterKontingente in AWS CodePipeline.

Wie werden Ausführungen im QUEUED Modus verarbeitet

Bei Pipelines im QUEUED Modus werden Phasen gesperrt, wenn eine Ausführung verarbeitet wird. Wartende Ausführungen überholen jedoch nicht Ausführungen, die bereits gestartet wurden.

Wartende Ausführungen sammeln sich an den Eintrittspunkten zu gesperrten Phasen in der Reihenfolge, in der sie die Phase erreichen, und bilden so eine Warteschlange wartender Ausführungen. QUEUEDIm Modus können Sie mehrere Warteschlangen in derselben Pipeline haben. Wenn eine Ausführung in der Warteschlange in eine Phase eintritt, ist die Phase gesperrt und es können keine weiteren Ausführungen mehr gestartet werden. Dieses Verhalten bleibt dasselbe wie SUPERSEDED im Modus. Wenn die Ausführung die Phase abgeschlossen hat, wird die Stufe entsperrt und ist bereit für die nächste Ausführung.

Das folgende Diagramm zeigt, wie Phasen in einer QUEUED Modus-Pipeline die Ausführung verarbeiten. Während in der Quellphase beispielsweise Ausführung 5 verarbeitet wird, bilden die Ausführungen für 6 und 7 die Warteschlange #1 und warten am Startpunkt der Phase. Die nächste Ausführung in der Warteschlange wird verarbeitet, nachdem die Phase entsperrt wurde.

Ein Diagramm, das Ausführungen in einer Pipeline zeigt, die auf Modus eingestellt ist. QUEUED

Weitere Informationen zu Überlegungen beim Anzeigen und Umschalten zwischen den Ausführungsmodi finden Sie unterLegen Sie den Pipeline-Ausführungsmodus fest oder ändern Sie ihn. Weitere Informationen zu Kontingenten mit Ausführungsmodi finden Sie unterKontingente in AWS CodePipeline.

Wie werden Ausführungen im PARALLEL Modus verarbeitet

Bei Pipelines im PARALLEL Modus sind die Ausführungen unabhängig voneinander und warten nicht, bis andere Ausführungen abgeschlossen sind, bevor sie gestartet werden. Es gibt keine Warteschlangen. Verwenden Sie die Ausführungshistorie-Ansicht, um parallel Ausführungen in der Pipeline anzuzeigen.

Verwenden Sie PARALLEL den Modus in Entwicklungsumgebungen, in denen jede Funktion über einen eigenen Funktionszweig verfügt und auf Zielen bereitgestellt wird, die nicht von anderen Benutzern gemeinsam genutzt werden.

Weitere Informationen zu Überlegungen beim Anzeigen und Wechseln zwischen Ausführungsmodi finden Sie unterLegen Sie den Pipeline-Ausführungsmodus fest oder ändern Sie ihn. Weitere Informationen zu Kontingenten mit Ausführungsmodi finden Sie unterKontingente in AWS CodePipeline.

Pipelinefluss verwalten

Der Ablauf von Pipeline-Ausführungen kann wie folgt gesteuert werden:

  • Ein Übergang steuert den Fluss von Ausführungen in die Phase. Übergänge können aktiviert oder deaktiviert werden. Wenn ein Übergang deaktiviert ist, können Pipeline-Ausführungen nicht in die Phase übergehen. Die Pipeline-Ausführung, die darauf wartet, in eine Phase einzutreten, in der der Übergang deaktiviert ist, wird als eingehende Ausführung bezeichnet. Nachdem Sie den Übergang aktiviert haben, geht eine eingehende Ausführung in die Phase über und sperrt sie.

    Ähnlich wie bei Ausführungen, die auf die Freigabe einer gesperrten Phase warten, kann bei Deaktivierung eines Übergangs die Ausführung, die darauf wartet, in die Phase einzutreten, durch eine neue Ausführung ersetzt werden. Wenn ein deaktivierter Übergang erneut aktiviert wird, tritt die neueste Ausführung in die Phase ein. Dies gilt auch für Ausführungen, die ältere Ausführungen ersetzt haben, während der Übergang deaktiviert war.

  • Eine Genehmigungsaktion, die verhindert, dass eine Pipeline zur nächsten Aktion übergeht, bis die entsprechende Genehmigung erteilt wurde (z. B. durch manuelle Genehmigung durch eine autorisierte Identität). Sie können eine Genehmigungsaktion beispielsweise verwenden, wenn Sie den Zeitpunkt steuern möchten, an dem eine Pipeline zur abschließenden Phase Production (Produktion) wechselt.

    Anmerkung

    Eine Phase mit einer Genehmigungsaktion ist gesperrt, bis die Genehmigungsaktion genehmigt oder abgelehnt wurde oder eine Zeitüberschreitung eintritt. Eine abgelaufene Genehmigungsaktion wird auf die gleiche Weise wie eine fehlgeschlagene Aktion verarbeitet.

  • Ein Fehler bedeutet, dass eine Aktion in einer Phase nicht erfolgreich abgeschlossen wurde. Die Revision wird nicht zur nächsten Aktion in der Phase oder zur nächsten Phase in der Pipeline weitergeleitet. Folgendes kann auftreten:

    • Sie führen die Phase manuell erneut aus, die die fehlgeschlagenen Aktionen enthält. Hierdurch wird die Ausführung fortgesetzt (fehlgeschlagene Aktionen werden wiederholt und, wenn erfolgreich, in der Phase/Pipeline fortgesetzt).

    • Eine andere Ausführung tritt in die fehlgeschlagene Phase ein und ersetzt die fehlgeschlagene Ausführung. In diesem Fall kann die fehlgeschlagene Ausführung nicht wiederholt werden.

Wenn Sie den Fluss einer Codeänderung durch die Pipeline festlegen, sollten Sie verwandte Aktionen innerhalb einer Phase gruppieren, sodass die Aktionen dieselbe Ausführung verarbeiten, wenn die Phase gesperrt wird. Sie können für jede Anwendungsumgebung AWS-Region, Availability Zone usw. eine Phase erstellen. Eine Pipeline mit zu vielen Phasen (die also zu detailliert definiert ist) kann zu viele gleichzeitige Änderungen ermöglichen. Eine Pipeline mit vielen Aktionen in einer großen Phase (die also zu grob definiert ist) kann zu viel Zeit benötigen, um eine Änderung freizugeben.

Beispiel: Eine Testaktion nach einer Bereitstellungsaktion in derselben Phase testet garantiert die Änderung, die bereitgestellt wurde. In diesem Beispiel wird eine Änderung in einer Testumgebung bereitgestellt und dann getestet. Dann wird die letzte Änderung aus der Testumgebung in eine Produktionsumgebung bereitgestellt. Im empfohlenen Beispiel handelt es sich bei Testumgebung und Produktionsumgebung um getrennte Phasen.

Das Bild zeigt zwei Arten der Gruppierung von Aktionen in Stufen, wobei sich die empfohlene Option auf der linken Seite befindet

Links: Gruppierung von zuammengehörenden Test-, Bereitstellungs- und Genehmigungsaktionen (empfohlen). Rechts: Zusammengehörende Aktionen in getrennten Phasen (nicht empfohlen).

So funktionieren eingehende Ausführungen

Eine eingehende Ausführung ist eine Ausführung, die darauf wartet, dass eine Phase, ein Übergang oder eine Aktion verfügbar wird, die nicht verfügbar ist, bevor sie fortgeführt wird. Die nächste Phase, der Übergang oder die nächste Aktion ist möglicherweise aus folgenden Gründen nicht verfügbar:

  • Eine weitere Exekution ist bereits in die nächste Phase eingetreten und wurde gesperrt.

  • Der Übergang zum Eintritt in die nächste Phase ist deaktiviert.

Sie können einen Übergang deaktivieren, um eine eingehende Ausführung abzuhalten, wenn Sie kontrollieren möchten, ob eine aktuelle Ausführung Zeit hat, in nachfolgenden Phasen abgeschlossen zu werden, oder wenn Sie alle Aktionen an einem bestimmten Punkt beenden möchten. Um festzustellen, ob es sich um eine eingehende Ausführung handelt, können Sie sich die Pipeline in der Konsole oder die Ausgabe des Befehls ansehen. get-pipeline-state

Bei eingehenden Ausführungen gelten die folgenden Überlegungen:

  • Sobald die Aktions-, Übergangs- oder Sperrphase verfügbar ist, geht die laufende eingehende Ausführung in die Phase über und durchläuft die Pipeline.

  • Solange die eingehende Ausführung wartet, kann sie manuell gestoppt werden. Eine eingehende Ausführung kann den Status InProgressStopped, oder Failed haben.

  • Wenn eine eingehende Ausführung gestoppt wurde oder fehlgeschlagen ist, kann sie nicht erneut versucht werden, da es keine fehlgeschlagenen Aktionen gibt, die wiederholt werden könnten. Wenn eine eingehende Ausführung gestoppt wurde und der Übergang aktiviert ist, wird die gestoppte eingehende Ausführung nicht in der Phase fortgesetzt.

Sie können eine eingehende Ausführung anzeigen oder beenden.