Erstellen und Hinzufügen einer benutzerdefinierten Aktion in CodePipeline - 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.

Erstellen und Hinzufügen einer benutzerdefinierten Aktion in CodePipeline

AWS CodePipeline umfasst eine Reihe von Aktionen, mit denen Sie Ressourcen zum Erstellen, Testen und Bereitstellen von Ressourcen für Ihren automatisierten Release-Prozess konfigurieren können. Falls Ihr Freigabeverfahren Aktivitäten beinhaltet, die nicht durch die Standardaktionen abgedeckt sind (wie z. B. ein intern entwickelter Erstellungsprozess oder eine Testsuite), können Sie dafür eine benutzerdefinierte Aktion erstellen und diese Ihrer Pipeline hinzufügen. Sie können den verwenden AWS CLI , um benutzerdefinierte Aktionen in Pipelines zu erstellen, die mit Ihrem AWS Konto verknüpft sind.

Sie können benutzerdefinierte Aktionen für die folgenden AWS CodePipeline Aktionskategorien erstellen:

  • Eine benutzerdefinierte Build-Aktionen für die Erstellung oder Umwandlung von Elementen

  • Eine benutzerdefinierte Deploy-Aktion zur Bereitstellung der Elemente für eine(n) oder mehrere Server, Webseiten oder Repositorys

  • Eine benutzerdefinierte Testaktion für die Konfiguration und Ausführung von automatisierten Tests

  • Eine benutzerdefinierte Aufrufaktionen für das Ausführen von Funktionen

Wenn Sie eine benutzerdefinierte Aktion erstellen, müssen Sie auch einen Job-Worker erstellen, der CodePipeline Jobanfragen für diese benutzerdefinierte Aktion abfragt, den Job ausführt und das Statusergebnis zurückgibt CodePipeline. Dieser Auftragsworker kann sich auf einem beliebigem Computer oder einer beliebigen Ressource befinden, solange er Zugriff auf den öffentlichen Endpunkt für CodePipeline besitzt. Um Zugriff und Sicherheit einfach zu verwalten, sollten Sie erwägen, Ihren Job Worker auf einer EC2 Amazon-Instance zu hosten.

Das folgende Diagramm zeigt einen umfassenden Überblick über eine Pipeline mit einer benutzerdefinierten Build-Aktion:

Ein umfassender Überblick über eine Pipeline mit einer benutzerdefinierten Build-Aktion.

Wenn eine Pipeline eine benutzerdefinierte Aktion als Teil einer Phase enthält, erstellt die Pipeline eine Jobanfrage. Ein benutzerdefinierter Auftragsworker erkennt diese Anforderung und führt den Auftrag aus (in diesem Beispiel ein benutzerdefinierter Vorgang mit Software von Drittanbietern). Sobald die Aktion abgeschlossen ist, wird vom Auftragsworker das Ergebnis über die erfolgreiche oder fehlgeschlagene Durchführung zurückgegeben. Wenn ein erfolgreiches Ergebnis eingeht, stellt die Pipeline die Revision und ihre Artefakte für die nächste Aktion bereit. Wenn ein Fehler zurückgegeben wird, stellt die Pipeline die Revision nicht für die nächste Aktion in der Pipeline bereit.

Anmerkung

Für diese Anleitungen müssen Sie die Schritte unter Erste Schritte mit CodePipeline ausgeführt haben.

Erstellen einer benutzerdefinierten Aktion

Um eine benutzerdefinierte Aktion mit dem zu erstellen AWS CLI
  1. Öffnen Sie einen Texteditor und erstellen Sie eine JSON-Datei mit der Aktion, dem Aktionsanbieter und allen erforderlichen Einstellungen für Ihre benutzerdefinierte Aktion. Ihre JSON-Datei für eine benutzerdefinierte Aktion mit nur einer Eigenschaft könnte beispielsweise wie folgt aussehen:

    { "category": "Build", "provider": "My-Build-Provider-Name", "version": "1", "settings": { "entityUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/", "executionUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/" }, "configurationProperties": [{ "name": "ProjectName", "required": true, "key": true, "secret": false, "queryable": false, "description": "The name of the build project must be provided when this action is added to the pipeline.", "type": "String" }], "inputArtifactDetails": { "maximumCount": integer, "minimumCount": integer }, "outputArtifactDetails": { "maximumCount": integer, "minimumCount": integer }, "tags": [{ "key": "Project", "value": "ProjectA" }] }

    In diesem Beispiel wird der benutzerdefinierten Aktion Tagging hinzugefügt, indem der benutzerdefinierten Aktion der Tag-Schlüssel Project und der Wert ProjectA hinzugefügt werden. Weitere Informationen zum Markieren von Ressourcen in finden Sie CodePipeline unterTaggen von -Ressourcen.

    Die JSON-Datei enthält zwei Eigenschaften, entityUrlTemplate und executionUrlTemplate. Solange die Konfigurationseigenschaft erforderlich und nicht geheim ist, können Sie über das Format {Config:name} in den URL-Vorlagen auf einen Namen in den Konfigurationseigenschaften der benutzerdefinierten Aktion verweisen. Im obigen Beispiel bezieht sich der entityUrlTemplate Wert beispielsweise auf die KonfigurationseigenschaftProjectName.

    • entityUrlTemplate: Der statische Link mit Informationen über die Dienstanbieter für die Aktion. Im Beispiel umfasst das Build-System einen statischen Link zu den einzelnen Build-Projekten. Das Linkformat variiert je nach Build-Anbieter oder Dienstanbieter (beispielsweise bei anderen Aktionstypen wie Test). Sie müssen dieses Linkformat so angeben, dass der Benutzer beim Hinzufügen der benutzerdefinierten Aktion mit dem Link eine Webseite im Browser öffnen kann, die die Einzelheiten für das Build-Projekt (oder die Testumgebung) enthält.

    • executionUrlTemplate: Der dynamische Link, der mit Informationen zur aktuellen oder letzten Ausführung der Aktion aktualisiert wird. Wenn Ihr benutzerdefinierter Auftragsworker den Status eines Auftrags aktualisiert (z. B. bei Erfolg, Fehler oder während der Ausführung), stellt er zusätzlich eine externalExecutionId bereit, die zur Vervollständigung des Links verwendet wird. Dieser Link kann verwendet werden, um Details zum Ausführen einer Aktion bereitzustellen.

    Wenn Sie die Aktion beispielsweise in der Pipeline anzeigen, sehen Sie die beiden folgenden Links:

    Links in der CodePipeline Konsole führen zu weiteren Informationen über den Ablauf einer Pipeline.

    1 Dieser statische Link wird angezeigt, nachdem Sie Ihre benutzerdefinierte Aktion hinzugefügt haben. Er verweist auf die Adresse in entityUrlTemplate, die Sie bei der Erstellung Ihrer benutzerdefinierten Aktion angegeben haben.

    2 Dieser dynamische Link wird nach jeder Ausführung der Aktion aktualisiert und verweist auf die Adresse in executionUrlTemplate, die Sie bei der Erstellung Ihrer benutzerdefinierten Aktion angegeben haben.

    Weitere Informationen zu diesen Linktypen sowie zu RevisionURLTemplate und ThirdPartyURL finden Sie unter ActionTypeSettingsund CreateCustomActionTypein der CodePipeline API-Referenz. Weitere Informationen über die Anforderungen zur Aktionsstruktur und zur Erstellung einer Aktion finden Sie unter CodePipeline Referenz zur Pipeline-Struktur.

  2. Speichern Sie die JSON-Datei und geben Sie ihr einen Namen, den Sie sich leicht merken können (z. B. „MyCustomAction.json“).

  3. Öffnen Sie eine Terminalsitzung (Linux, OS X, Unix) oder eine Eingabeaufforderung (Windows) auf einem Computer, auf dem die AWS CLI installiert ist.

  4. Verwenden Sie den, AWS CLI um den aws codepipeline create-custom-action-type Befehl auszuführen, und geben Sie dabei den Namen der JSON-Datei an, die Sie gerade erstellt haben.

    Um beispielsweise eine benutzerdefinierte Build-Aktion zu erstellen:

    Wichtig

    Achten Sie darauf, dass file:// vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.

    aws codepipeline create-custom-action-type --cli-input-json file://MyCustomAction.json
  5. Dieser Befehl gibt die gesamte Struktur der erstellten, benutzerdefinierten Aktion sowie die für Sie hinzugefügte JobList-Aktionskonfigurationseigenschaft zurück. Wenn Sie die benutzerdefinierte Aktion zu einer Pipeline hinzufügen, können Sie JobList nutzen, um die Projekte vom Anbieter anzugeben, für die Sie Aufträge abfragen können. Ohne entsprechende Konfiguration werden bei der Abfrage von Aufträgen durch Ihren benutzerdefinierten Auftragsworker alle verfügbaren Aufträge zurückgegeben.

    Der vorherige Befehl könnte beispielsweise eine Struktur ähnlich der Folgenden zurückgeben:

    { "actionType": { "inputArtifactDetails": { "maximumCount": 1, "minimumCount": 1 }, "actionConfigurationProperties": [ { "secret": false, "required": true, "name": "ProjectName", "key": true, "description": "The name of the build project must be provided when this action is added to the pipeline." } ], "outputArtifactDetails": { "maximumCount": 0, "minimumCount": 0 }, "id": { "category": "Build", "owner": "Custom", "version": "1", "provider": "My-Build-Provider-Name" }, "settings": { "entityUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/", "executionUrlTemplate": "https://my-build-instance/job/mybuildjob/lastSuccessfulBuild/{ExternalExecutionId}/" } } }
    Anmerkung

    Als Teil der Ausgabe des create-custom-action-type Befehls umfasst der id Abschnitt"owner": "Custom". CodePipeline weist benutzerdefinierte Aktionstypen automatisch Custom als Besitzer zu. Dieser Wert kann zugewiesen oder geändert werden, wenn Sie den Befehl create-custom-action-type oder den Befehl update-pipeline verwenden.

Erstellen eines Auftragsworkers für Ihre benutzerdefinierte Aktion

Für benutzerdefinierte Aktionen ist ein Job-Worker erforderlich, der Jobanfragen für die benutzerdefinierte Aktion abfragt, den Job ausführt und das Statusergebnis CodePipeline zurückgibt. CodePipeline Der Auftragsworker kann sich auf einem beliebigen Computer oder einer beliebigen Ressource befinden, solange er Zugriff auf den öffentlichen Endpunkt für CodePipeline besitzt.

Sie können Ihren Auftragsworker auf vielerlei Arten gestalten. In den folgenden Abschnitten erhalten Sie praktische Anleitungen für die Entwicklung Ihres benutzerdefinierten Auftragsworkers für CodePipeline.

Wählen und Konfigurieren einer Strategie für die Berechtigungsverwaltung Ihres Auftragsworkers

Um einen benutzerdefinierten Job Worker für Ihre benutzerdefinierte Aktion in zu entwickeln CodePipeline, benötigen Sie eine Strategie für die Integration von Benutzer- und Rechteverwaltung.

Die einfachste Strategie besteht darin, die Infrastruktur, die Sie für Ihren benutzerdefinierten Job Worker benötigen, hinzuzufügen, indem Sie EC2 Amazon-Instances mit einer IAM-Instance-Rolle erstellen, sodass Sie die Ressourcen, die Sie für Ihre Integration benötigen, einfach skalieren können. Sie können die integrierte Integration mit verwenden AWS , um die Interaktion zwischen Ihrem benutzerdefinierten Job Worker und CodePipeline zu vereinfachen.

So richten Sie EC2 Amazon-Instances ein
  1. Erfahren Sie mehr über Amazon EC2 und finden Sie heraus, ob es die richtige Wahl für Ihre Integration ist. Weitere Informationen finden Sie unter Amazon EC2 — Virtual Server Hosting.

  2. Beginnen Sie mit der Erstellung Ihrer EC2 Amazon-Instances. Weitere Informationen finden Sie unter Erste Schritte mit Amazon EC2 Linux-Instances.

Eine weitere Strategie, die Sie in Betracht ziehen sollten, ist die Verwendung eines Identitätsverbunds mit IAM, um Ihr vorhandenes Identitätsanbietersystem und Ihre Ressourcen zu integrieren. Diese Strategie ist besonders nützlich, wenn Sie bereits einen Unternehmensidentitätsanbieter haben oder eine Konfiguration vorgenommen wurde, um Benutzer mit Web-Identitätsanbietern zu unterstützen. Mit dem Identitätsverbund können Sie sicheren Zugriff auf AWS Ressourcen gewähren CodePipeline, auch ohne IAM-Benutzer erstellen oder verwalten zu müssen. Sie können Funktionen und Richtlinien für die Sicherheitsanforderungen bezüglich Passwörtern und die Rotation von Anmeldeinformationen nutzen. Sie können Beispielanwendungen als Vorlage für Ihre selbsterstellten Anwendungen verwenden.

So richten Sie einen Identitätsverbund ein
  1. Erfahren Sie mehr über den IAM-Identitätsverbund. Weitere Informationen finden Sie unter Manage Federation.

  2. Sehen Sie sich die Beispiele in Scenarios for Granting Temporary Access an, um das Szenario für den temporären Zugriff zu ermitteln, das am besten für Ihre benutzerdefinierte Aktion geeignet ist.

  3. Sehen Sie sich die für Ihre Infrastruktur relevanten Codebeispiele zum Identitätsverbund an. Diese sind beispielsweise:

  4. Erste Schritte bei der Konfiguration eines Identitätsverbunds. Weitere Informationen finden Sie unter Identity Providers and Federation im IAM-Benutzerhandbuch.

Erstellen Sie eine der folgenden Optionen, die Sie unter Ihrem verwenden können, AWS-Konto wenn Sie Ihre benutzerdefinierte Aktion und Ihren Job Worker ausführen.

Benutzer benötigen programmgesteuerten Zugriff, wenn sie mit AWS anderen interagieren möchten. AWS Management Console Die Art und Weise, wie programmatischer Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von

Mitarbeiteridentität

(Benutzer, die in IAM Identity Center verwaltet werden)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAM-Benutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Es folgt ein Beispiel für eine Richtlinie, die Sie für die Verwendung mit Ihrem benutzerdefinierten Auftragsworker erstellen können. Diese Richtlinie dient lediglich als Beispiel und wird unverändert bereitgestellt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForJobs", "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PutJobSuccessResult", "codepipeline:PutJobFailureResult" ], "Resource": [ "arn:aws:codepipeline:us-east-2::actionType:custom/Build/MyBuildProject/1/" ] } ] }
Anmerkung

Erwägen Sie die Verwendung der AWSCodePipelineCustomActionAccess verwalteten Richtlinie.

Entwickeln eines Auftragsworkers für Ihre benutzerdefinierte Aktion

Nachdem Sie Ihre Strategie für die Verwaltung von Berechtigungen ausgewählt haben, sollten Sie sich überlegen, wie Ihr Mitarbeiter mit Ihrem Job umgehen wird CodePipeline. Das folgende allgemeine Diagramm zeigt den Arbeitsablauf einer benutzerdefinierten Aktion und eines Job Workers für einen Build-Prozess.

Der Arbeitsablauf einer benutzerdefinierten Aktion und eines benutzerdefinierten Job-Workers für einen Build-Prozess.
  1. Ihr Jobworker fragt CodePipeline nach Jobs ab mitPollForJobs.

  2. Wenn eine Pipeline durch eine Veränderung in der Quellphase ausgelöst wird (wenn beispielsweise ein Entwickler eine Änderung vornimmt), wird das automatisierte Freigabeverfahren gestartet. Der Vorgang wird fortgesetzt, bis Ihre benutzerdefinierte Aktion konfiguriert wurde. Wenn in dieser Phase Ihre Aktion erreicht ist, wird ein Job in CodePipeline die Warteschlange gestellt. Dieser Auftrag wird angezeigt, wenn Ihr Auftragsworker erneut PollForJobs aufruft, um den Status abzurufen. Entnehmen Sie PollForJobs die Auftragsdetails und geben Sie diese an Ihren Auftragsworker zurück.

  3. Der Arbeitsarbeiter ruft anAcknowledgeJob, um CodePipeline eine Auftragsbestätigung zu senden. CodePipeline gibt eine Bestätigung zurück, die angibt, dass der Arbeitsnehmer den Job fortsetzen soll (InProgress), oder, wenn mehr als ein Jobarbeiter nach Stellen sucht und ein anderer Jobarbeiter den Job bereits beansprucht hat, wird eine InvalidNonceException Fehlerantwort zurückgegeben. CodePipeline Wartet nach der InProgress Bestätigung auf die Rückgabe der Ergebnisse.

  4. Der Job-Worker initiiert Ihre benutzerdefinierte Aktion für die Revision, und dann wird Ihre Aktion ausgeführt. Zusammen mit allen anderen Aktionen gibt Ihre benutzerdefinierte Aktion ein Ergebnis an den Job-Worker zurück. Im Beispiel einer benutzerdefinierten Build-Aktion ruft die Aktion Artefakte aus dem Amazon S3 S3-Bucket ab, erstellt sie und überträgt erfolgreich erstellte Artefakte zurück in den Amazon S3 S3-Bucket.

  5. Während die Aktion ausgeführt wird, kann der Job-Worker PutJobSuccessResult mit einem Fortsetzungstoken (der Serialisierung des Status des vom Job-Worker generierten Jobs, z. B. einer Build-ID im JSON-Format oder einem Amazon S3 S3-Objektschlüssel) sowie mit den ExternalExecutionId Informationen, die zum Auffüllen des Links verwendet werden, aufrufen. executionUrlTemplate Dadurch wird die Konsolenansicht der Pipeline während des Vorgangs mit einem funktionierenden Link zu spezifischen Aktionsdetails versehen. Dieses Vorgehen ist zwar nicht erforderlich, jedoch eine bewährte Methode, da sie Benutzern das Abrufen des Status der benutzerdefinierten Aktion ermöglicht, während diese ausgeführt wird.

    Sobald PutJobSuccessResult aufgerufen wird, gilt der Auftrag als abgeschlossen. Es wird ein neuer Job erstellt CodePipeline , der das Fortsetzungstoken enthält. Dieser Auftrag wird angezeigt, wenn Ihr Auftragsworker erneut PollForJobs aufruft. Dieser neue Auftrag kann für die Überprüfung des Aktionsstatus verwendet werden und wird entweder mit einem Fortsetzungstoken oder nach Abschluss der Aktion ohne ein Fortsetzungstoken zurückgegeben.

    Anmerkung

    Wenn Ihr Auftragsworker alle Aufgaben für eine benutzerdefinierte Aktion übernimmt, sollten Sie erwägen, die Verarbeitung Ihres Auftragsworkers in mindestens zwei Schritte aufzuteilen. Im ersten Schritt wird die Detailseite für Ihre Aktion aufgebaut. Sobald Sie die Detailseite erstellt haben, kann der Status des Auftragsworkers je nach Größenbeschränkungen serialisiert und als Fortsetzungstoken zurückgesendet werden (siehe Kontingente in AWS CodePipeline). Sie können beispielsweise den Status der Aktion in die Zeichenfolge schreiben, die Sie als Fortsetzungstoken verwenden. Im zweiten Verarbeitungsschritt (und allen nachfolgenden Schritten) Ihres Auftragsworkers wird die eigentliche Aufgabe ausgeführt. Der letzte Schritt gibt Erfolg oder Misserfolg zurück CodePipeline, ohne dass im letzten Schritt ein Fortsetzungstoken vorhanden ist.

    Weitere Informationen zur Verwendung des Fortsetzungstokens finden Sie in den Spezifikationen für PutJobSuccessResult unter CodePipeline -API-Referenz.

  6. Sobald die benutzerdefinierte Aktion abgeschlossen ist, gibt der Job Worker das Ergebnis der benutzerdefinierten Aktion zurück, CodePipeline indem er eine der folgenden Optionen aufruft APIs:

    • PutJobSuccessResultohne ein Fortsetzungstoken, was darauf hinweist, dass die benutzerdefinierte Aktion erfolgreich ausgeführt wurde

    • PutJobFailureResult, was darauf hinweist, dass die benutzerdefinierte Aktion nicht erfolgreich ausgeführt wurde

    Je nach Ergebnis fährt die Pipeline entweder mit der nächsten Aktion fort (bei Erfolg) oder wird unterbrochen (bei Fehlern).

Benutzerdefinierte Auftragsworkerarchitektur und Beispiele

Nachdem Sie den komplexen Workflow entworfen haben, können Sie Ihren Auftragsworker erstellen. Durch die Einzelheiten Ihrer benutzerdefinierten Aktion wird zwar letztendlich festgelegt, was für Ihren Auftragsworker erforderlich ist, aber die meisten Auftragsworker für benutzerdefinierte Aktionen verfügen über die folgenden Funktionen:

  • Abfragen nach Aufträgen aus der CodePipeline Verwendung PollForJobs von.

  • Bestätigen von Aufträgen und Rückgabe von Ergebnissen bei CodePipeline Verwendung von AcknowledgeJobPutJobSuccessResult, und. PutJobFailureResult

  • Artefakte werden aus dem Amazon S3-Bucket abgerufen und/oder in den Amazon S3 S3-Bucket für die Pipeline gelegt. Um Artefakte aus dem Amazon S3 S3-Bucket herunterzuladen, müssen Sie einen Amazon S3 S3-Client erstellen, der Signature Version 4-Signatur (Sig V4) verwendet. Sig V4 ist erforderlich für AWS KMS.

    Um Artefakte in den Amazon S3 S3-Bucket hochzuladen, müssen Sie die Amazon S3 PutObject S3-Anfrage zusätzlich für die Verschlüsselung konfigurieren. Derzeit wird nur der AWS Key Management Service (AWS KMS) für die Verschlüsselung unterstützt. AWS KMS verwendet AWS KMS keys. Um zu wissen, ob ein Von AWS verwalteter Schlüssel oder ein vom Kunden verwalteter Schlüssel zum Hochladen von Artefakten verwendet werden soll, muss sich Ihr benutzerdefinierter Job Worker die Auftragsdaten ansehen und die Eigenschaft des Verschlüsselungsschlüssels überprüfen. Wenn die Eigenschaft festgelegt ist, sollten Sie bei der Konfiguration diese vom Kunden verwaltete Schlüssel-ID verwenden AWS KMS. Wenn die Schlüsseleigenschaft Null ist, verwenden Sie die Von AWS verwalteter Schlüssel. CodePipeline verwendet die, Von AWS verwalteter Schlüssel sofern nicht anders konfiguriert.

    Ein Beispiel, das zeigt, wie die AWS KMS Parameter in Java oder .NET erstellt werden, finden Sie unter Specifying the AWS Key Management Service in Amazon S3 Using the AWS SDKs. Weitere Informationen zum Amazon S3 S3-Bucket für CodePipeline finden Sie unterCodePipeline Konzepte .

Ein komplexeres Beispiel für einen benutzerdefinierten Job Worker finden Sie unter GitHub. Dieses Beispiel ist ein Open Source-Beispiel und wird unverändert bereitgestellt.

Hinzufügen einer benutzerdefinierten Aktion zu einer Pipeline

Nachdem Sie einen Job Worker eingerichtet haben, können Sie Ihre benutzerdefinierte Aktion zu einer Pipeline hinzufügen, indem Sie eine neue erstellen und diese auswählen, wenn Sie den Assistenten „Pipeline erstellen“ verwenden, indem Sie eine bestehende Pipeline bearbeiten und die benutzerdefinierte Aktion hinzufügen oder indem Sie AWS CLI SDKs, den oder den verwenden APIs.

Anmerkung

Sie können eine Pipeline über den "Create Pipeline" (Pipeline erstellen)-Assistenten anlegen, die eine benutzerdefinierte Aktion enthält, wenn sie eine Build- oder Deploy-Aktion ist. Wenn sich Ihre benutzerdefinierte Aktion in der Testkategorie befindet, müssen Sie sie durch Bearbeiten einer vorhandenen Pipeline hinzufügen.

Hinzufügen einer benutzerdefinierten Aktion zu einer bestehenden Pipeline (CLI)

Sie können den verwenden AWS CLI , um einer vorhandenen Pipeline eine benutzerdefinierte Aktion hinzuzufügen.

  1. Öffnen Sie eine Terminalsitzung (Linux, macOS oder Unix) oder eine Befehlszeile (Windows) und führen Sie den get-pipeline Befehl aus, um die Pipeline-Struktur, die Sie bearbeiten möchten, in eine JSON-Datei zu kopieren. Für eine Pipeline mit dem Namen MyFirstPipeline würden Sie beispielsweise den folgenden Befehl verwenden:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Dieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.

  2. Öffnen Sie die JSON-Datei in einem Texteditor und bearbeiten Sie die Struktur der Datei, um Ihre benutzerdefinierte Aktion zu einer vorhandenen Stufe hinzuzufügen.

    Anmerkung

    Wenn Sie möchten, dass Ihre Aktion mit einer anderen Aktion in dieser Stufe parallel ausgeführt wird, weisen Sie ihr den gleichen runOrder-Wert wie der anderen Aktion zu.

    Um beispielsweise die Struktur einer Pipeline zu bearbeiten und ihr eine Stufe mit dem Namen Build hinzufügen und gleichzeitig eine benutzerdefinierte Aktion zu dieser Stufe hinzuzufügen, können Sie die JSON-Datei so ändern, dass die Build-Stufe vor einer Bereitstellungsstufe eingefügt ist. Beispiel:

    , { "name": "MyBuildStage", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "MyBuildCustomAction", "actionTypeId": { "category": "Build", "owner": "Custom", "version": "1", "provider": "My-Build-Provider-Name" }, "outputArtifacts": [ { "name": "MyBuiltApp" } ], "configuration": { "ProjectName": "MyBuildProject" }, "runOrder": 1 } ] }, { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyBuiltApp" } ], "name": "Deploy-CodeDeploy-Application", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineDemoFleet" }, "runOrder": 1 } ] } ] }
  3. Führen Sie den Befehl update-pipeline aus, um die Änderungen zu übernehmen. Geben Sie die Pipeline-JSON-Datei dabei folgendermaßen an:

    Wichtig

    Achten Sie darauf, dass file:// vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Dieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.

  4. Öffnen Sie die CodePipeline Konsole und wählen Sie den Namen der Pipeline, die Sie gerade bearbeitet haben.

    Die Pipeline zeigt die Änderungen an. Wenn Sie das nächste Mal eine Änderung am Quellspeicherort durchführen, führt die Pipeline die Revision über die überarbeitete Struktur der Pipeline aus.