AWS CodePipeline のサンプル CodeBuild - AWS CodeBuild

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CodePipeline のサンプル CodeBuild

このセクションでは、 CodePipeline と の統合例について説明します CodeBuild。

サンプル 説明

CodePipeline/ CodeBuild 統合とバッチビルドのサンプル

これらのサンプルは、 AWS CodePipeline を使用してバッチビルドを使用するビルドプロジェクトを作成する方法を示しています。

複数の入力ソースと出力アーティファクトとの CodePipeline/ CodeBuild 統合のサンプル

このサンプルでは、 AWS CodePipeline を使用して、複数の入力ソースを使用して複数の出力アーティファクトを作成するビルドプロジェクトを作成する方法を示します。

CodePipeline/ CodeBuild 統合とバッチビルドのサンプル

AWS CodeBuild はバッチビルドをサポートします。次のサンプルは、 AWS CodePipeline を使用してバッチビルドを使用するビルドプロジェクトを作成する方法を示しています。

パイプラインの構造を定義する JSON形式のファイルを使用し、それを で使用 AWS CLI してパイプラインを作成できます。詳細については、『AWS CodePipeline ユーザーガイド』の「AWS CodePipeline パイプライン構造のリファレンス」を参照してください。

個々のアーティファクトを使用した Batch 構築

別のアーティファクトでバッチビルドを作成するパイプライン構造の例として、次のJSONファイルを使用します。でバッチビルドを有効にするには CodePipeline、 configuration オブジェクトの BatchEnabledパラメータを に設定しますtrue

{ "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 } }

このパイプライン設定で動作する CodeBuild buildspec ファイルの例を次に示します。

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

パイプラインの JSON ファイルで指定された出力アーティファクトの名前は、buildspec ファイルで定義されているビルドとアーティファクトの識別子と一致する必要があります。構文は です。buildIdentifier プライマリアーティファクトの場合は、buildIdentifier_artifactIdentifier セカンダリアーティファクトの 。

例えば、出力アーティファクト名 の場合build1、 CodeBuild は のプライマリアーティファクトbuild1を の場所にアップロードしますbuild1。出力名 CodeBuild の場合build1_artifact1artifact1のセカンダリアーティファクトbuild1を の場所にアップロードbuild1_artifact1します。出力場所が 1 つだけ指定されている場合、名前は である必要があります。buildIdentifier のみ。

JSON ファイルを作成したら、パイプラインを作成できます。を使用して create-pipeline コマンド AWS CLI を実行し、 ファイルを --cli-input-jsonパラメータに渡します。詳細については、「 ユーザーガイド」の「パイプラインの作成 (CLI)AWS CodePipeline 」を参照してください。

複合アーチファクトを使用したBatch ビルド

アーティファクトを組み合わせたバッチビルドを作成するパイプライン構造の例として、次の JSON ファイルを使用します。でバッチビルドを有効にするには CodePipeline、 configuration オブジェクトの BatchEnabledパラメータを に設定しますtrue。ビルド成果物を同じ場所に結合するには、「CombineArtifacts」オブジェクトの「configuration」パラメータのパラメータを「true」に設置します。

{ "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 } }

このパイプライン設定で動作する CodeBuild buildspec ファイルの例を次に示します。

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

バッチビルドで結合アーティファクトが有効になっている場合、許可される出力は 1 つだけです。 CodeBuild は、すべてのビルドのプライマリアーティファクトを 1 つのZIPファイルにまとめます。

JSON ファイルを作成したら、パイプラインを作成できます。を使用して create-pipeline コマンド AWS CLI を実行し、 ファイルを --cli-input-jsonパラメータに渡します。詳細については、「 ユーザーガイド」の「パイプラインの作成 (CLI)AWS CodePipeline 」を参照してください。

複数の入力ソースと出力アーティファクトとの CodePipeline/ CodeBuild 統合のサンプル

AWS CodeBuild プロジェクトは複数の入力ソースを取ることができます。また、複数の出力アーティファクトを作成することもできます。このサンプルでは、 AWS CodePipeline を使用して、複数の入力ソースを使用して複数の出力アーティファクトを作成するビルドプロジェクトを作成する方法を示します。詳細については、「複数の入力ソースと出力アーティファクトのサンプル」を参照してください。

パイプラインの構造を定義する JSON形式のファイルを使用し、それを で使用 AWS CLI してパイプラインを作成できます。複数の入力ソースと複数の出力アーティファクトを含むビルドを作成するパイプライン構造の例として、次の JSON ファイルを使用します。このサンプルの後半では、このファイルが複数の入力と出力をどのように指定しているかが分かります。詳細については、「 ユーザーガイド」のCodePipeline 「パイプライン構造リファレンスAWS CodePipeline 」を参照してください。

{ "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 } }

このJSONファイルでは、次の操作を行います。

  • 入力ソースの 1 つを PrimarySourceに指定する必要があります。このソースは、 が buildspec ファイル CodeBuild を検索して実行するディレクトリです。キーワードPrimarySourceは、 JSON ファイルの CodeBuild ステージの configurationセクションでプライマリソースを指定するために使用されます。

  • 各入力ソースは、それぞれのディレクトリにインストールされます。このディレクトリは、組み込み環境変数 $CODEBUILD_SRC_DIR (プライマリソースの場合) と $CODEBUILD_SRC_DIR_yourInputArtifactName (他のすべてのソースの場合) に保存されます。このサンプルのパイプラインでは、2 つの入力ソースディレクトリは $CODEBUILD_SRC_DIR$CODEBUILD_SRC_DIR_source2 です。詳細については、「ビルド環境の環境変数」を参照してください。

  • パイプラインの JSON ファイルで指定された出力アーティファクトの名前は、buildspec ファイルで定義されているセカンダリアーティファクトの名前と一致する必要があります。このパイプラインは、次の buildspec ファイルを使用します。詳細については、「buildspec の構文」を参照してください。

    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

JSON ファイルを作成したら、パイプラインを作成できます。を使用して create-pipeline コマンド AWS CLI を実行し、 ファイルを --cli-input-jsonパラメータに渡します。詳細については、「 ユーザーガイド」の「パイプラインの作成 (CLI)AWS CodePipeline 」を参照してください。