View a markdown version of this page

AWS CodePipeline Proben für CodeBuild - AWS CodeBuild

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.

AWS CodePipeline Proben für CodeBuild

In diesem Abschnitt werden Beispielintegrationen zwischen CodePipeline und CodeBuild beschrieben.

Beispiel Description

Beispiele für CodePipeline/CodeBuild Integrationen und Batch-Builds

Diese Beispiele zeigen, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das Batch-Builds verwendet.

Beispiel einer CodePipeline/CodeBuild Integration mit mehreren Eingabequellen und Ausgabeartefakten

Dieses Beispiel zeigt, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das mehrere Eingabequellen verwendet, um mehrere Ausgabeartefakte zu erstellen.

Beispiele für CodePipeline/CodeBuild Integrationen und Batch-Builds

AWS CodeBuild unterstützt Batch-Builds. Die folgenden Beispiele zeigen, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das Batch-Builds verwendet.

Sie können eine JSON-formatted Datei verwenden, die die Struktur Ihrer Pipeline definiert, und sie dann zusammen mit der verwenden, AWS CLI um die Pipeline zu erstellen. Weitere Informationen finden Sie unter Referenz zur AWS CodePipeline Pipeline-Struktur im AWS CodePipeline Benutzerhandbuch.

Batch-Erstellung mit einzelnen Artefakten

Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Batch-Build mit separaten Artefakten erstellt. Um Batch-Builds zu aktivieren CodePipeline, setzen Sie den BatchEnabled Parameter des configuration Objekts auftrue.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "build1" }, { "name": "build1_artifact1" }, { "name": "build1_artifact2" }, { "name": "build2_artifact1" }, { "name": "build2_artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

Das Folgende ist ein Beispiel für eine CodeBuild Buildspec-Datei, die mit dieser Pipeline-Konfiguration funktioniert.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file secondary-artifacts: artifact1: files: - output_file artifact2: files: - output_file

Die Namen der Ausgabeartefakte, die in der JSON-Datei der Pipeline angegeben sind, müssen mit den Bezeichnern der Builds und Artefakte übereinstimmen, die in Ihrer Buildspec-Datei definiert sind. Die Syntax gilt buildIdentifier für die primären Artefakte und buildIdentifier _ artifactIdentifier für die sekundären Artefakte.

Beispielsweise CodeBuild wird für den Namen des build1 Ausgabe-Artefakts das primäre Artefakt von build1 an den Speicherort von hochgeladen. build1 Für den build1_artifact1 Ausgabenamen CodeBuild wird das sekundäre Artefakt artifact1 von build1 an den Speicherort von build1_artifact1 usw. hochgeladen. Wenn nur ein Ausgabeort angegeben ist, sollte der Name buildIdentifier nur lauten.

Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl create-pipeline auszuführen und die Datei an den Parameter zu übergeben. --cli-input-json Weitere Informationen finden Sie im AWS CodePipeline Benutzerhandbuch unter Erstellen einer Pipeline (CLI).

Batch-Erstellung mit kombinierten Artefakten

Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Batch-Build mit kombinierten Artefakten erstellt. Um Batch-Builds zu aktivieren CodePipeline, setzen Sie den BatchEnabled Parameter des configuration Objekts auftrue. Um die Build-Artefakte an derselben Stelle zu kombinieren, setzen Sie den CombineArtifacts Parameter des configuration Objekts auftrue.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "output1 " } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true", "CombineArtifacts": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

Das Folgende ist ein Beispiel für eine CodeBuild Buildspec-Datei, die mit dieser Pipeline-Konfiguration funktioniert.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file

Wenn kombinierte Artefakte für den Batch-Build aktiviert sind, ist nur eine Ausgabe zulässig. CodeBuild kombiniert die primären Artefakte aller Builds in einer einzigen ZIP-Datei.

Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl create-pipeline auszuführen und die Datei an den Parameter zu übergeben. --cli-input-json Weitere Informationen finden Sie im AWS CodePipeline Benutzerhandbuch unter Erstellen einer Pipeline (CLI).

Beispiel einer CodePipeline/CodeBuild Integration mit mehreren Eingabequellen und Ausgabeartefakten

Ein AWS CodeBuild Projekt kann mehr als eine Eingabequelle verwenden. Es kann zudem mehr als ein Ausgabeartefakt erstellen. Dieses Beispiel zeigt, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das mehrere Eingabequellen verwendet, um mehrere Ausgabeartefakte zu erstellen. Weitere Informationen finden Sie unter Beispiel für mehrere Eingabequellen und Ausgabeartefakte.

Sie können eine JSON-formatted Datei verwenden, die die Struktur Ihrer Pipeline definiert, und sie dann zusammen mit der verwenden, AWS CLI um die Pipeline zu erstellen. Verwenden Sie die folgende JSON-Datei als Beispiel für eine Pipeline-Struktur, die einen Build mit mehr als einer Eingabequelle und mehr als einem Ausgabeartefakt erstellt. Unten in diesem Beispiel werden Sie sehen, wie diese Datei mehrere Eingaben und Ausgaben angibt. Weitere Informationen finden Sie in der Referenz zur CodePipeline Pipeline-Struktur im AWS CodePipeline Benutzerhandbuch.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "my-input-bucket-name", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "my-other-input-bucket-name", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "AWS CodeBuild" }, "outputArtifacts": [ { "name": "artifact1" }, { "name": "artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "AWS-CodePipeline-internal-bucket-name" }, "name": "my-pipeline-name", "version": 1 } }

Für diese JSON-Datei gilt:

  • Eine der Eingabequellen muss als PrimarySource fungieren. Diese Quelle ist das Verzeichnis, in dem CodeBuild Ihre Buildspec-Datei gesucht und ausgeführt wird. Das Schlüsselwort PrimarySource wird verwendet, um die primäre Quelle im configuration Abschnitt der CodeBuild Stufe in der JSON-Datei anzugeben.

  • Jede Eingabequelle ist in einem eigenen Verzeichnis installiert. Dieses Verzeichnis ist in der integrierten Umgebungsvariable $CODEBUILD_SRC_DIR für die primäre Quelle und $CODEBUILD_SRC_DIR_yourInputArtifactName für alle anderen Quellen gespeichert. Für die Pipeline in diesem Beispiel lauten die beiden Eingabequellverzeichnisse $CODEBUILD_SRC_DIR und $CODEBUILD_SRC_DIR_source2. Weitere Informationen finden Sie unter Umgebungsvariablen in Build-Umgebungen.

  • Die in der JSON-Datei der Pipeline angegebenen Namen der Ausgabeartefakte müssen den Namen der sekundären Artefakte entsprechen, die in der buildspec-Datei definiert sind. Diese Pipeline verwendet die folgende buildspec-Datei. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.

    version: 0.2 phases: build: commands: - touch source1_file - cd $CODEBUILD_SRC_DIR_source2 - touch source2_file artifacts: files: - '**/*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR files: - source1_file artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - source2_file

Nachdem Sie die JSON-Datei erstellt haben, können Sie die Pipeline erstellen. Verwenden Sie den AWS CLI , um den Befehl create-pipeline auszuführen und die Datei an den Parameter zu übergeben. --cli-input-json Weitere Informationen finden Sie im AWS CodePipeline Benutzerhandbuch unter Erstellen einer Pipeline (CLI).