CodePipeline Beispiele 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.

CodePipeline Beispiele für CodeBuild

AWS CodePipeline Integration mit CodeBuild und Batch-Builds

AWS CodeBuild unterstützt jetzt Batch-Builds. Dieses Beispiel zeigt, wie Sie AWS CodePipeline ein Build-Projekt erstellen, das Batch-Builds verwendet.

Sie können eine Datei im JSON-Format 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 AWS CodePipeline Pipeline-Strukturreferenz 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 } }

Im Folgenden finden Sie 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 in der JSON-Datei der Pipeline angegebenen Ausgabeartefakte müssen mit der Kennung der Builds und Artefakte übereinstimmen, die in Ihrer Buildspec-Datei definiert sind. Die Syntax lautet buildIdentifier für die primären Artefakte und buildIdentifier _ artifactIdentifier für die sekundären Artefakte.

Wird beispielsweise für den Namen des Ausgabeartefakts das primäre Artefakt von an den Speicherort von build1 hochgeladen CodeBuild . build1 build1 Als Ausgabename build1_artifact1 CodeBuild wird das sekundäre Artefakt artifact1 von build1 an den Speicherort von build1_artifact1 hochgeladen usw. Wenn nur ein Ausgabespeicherort angegeben ist, sollte der Name nur buildIdentifier 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 unter Erstellen einer Pipeline (CLI) im AWS CodePipeline Benutzerhandbuch.

Batch-Build 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 } }

Im Folgenden finden Sie 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 unter Erstellen einer Pipeline (CLI) im AWS CodePipeline Benutzerhandbuch.

AWS CodePipeline Beispiel für Integration mit CodeBuild und mehrere Eingabequellen und Ausgabeartefakte

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 Datei im JSON-Format 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 nach Ihrer Buildspec-Datei gesucht und diese ausgeführt wird. Das Schlüsselwort PrimarySource wird verwendet, um die Primärquelle im configuration Abschnitt der CodeBuild Phase 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 unter Erstellen einer Pipeline (CLI) im AWS CodePipeline Benutzerhandbuch.