複数の入力ソースと出力アーティファクトのサンプル - AWS CodeBuild

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

複数の入力ソースと複数の出力アーティファクトのセットを持つ AWS CodeBuild ビルドプロジェクトを作成できます。このサンプルは、ビルドプロジェクトをセットアップする方法を示しています。

  • さまざまなタイプの複数のソースとリポジトリを使用します。

  • ビルドアーティファクトを複数の S3 バケットに 1 つのビルドで発行します。

このサンプルでは、ビルドプロジェクトを作成し、それを使用してビルドを実行します。このサンプルでは、ビルドプロジェクトの buildspec ファイルを使用して、複数のソースを組み込み、複数のアーティファクトセットを作成する方法を示します。

  1. ソースを 1 つ以上の S3 CodeCommit バケットにアップロードするか、 、 GitHub 、GitHubエンタープライズサーバー、または Bitbucket リポジトリにアップロードします。

  2. プライマリソースを選択します。これは、 が buildspec ファイルを探して実行するソースです。CodeBuild

  3. ビルドプロジェクトを作成します。詳細については、を参照してください AWS CodeBuild でのビルドプロジェクトの作成

  4. AWS CodeBuild の直接実行」の手順に従ってビルドプロジェクトを作成し、ビルドを実行して、ビルドに関する情報を取得します。

  5. AWS CLI を使用してビルドプロジェクトを作成する場合、create-project コマンドへの JSON 形式の入力は次のようになります。

    { "name": "sample-project", "source": { "type": "S3", "location": "bucket/sample.zip" }, "secondarySources": [ { "type": "CODECOMMIT", "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo" "sourceIdentifier": "source1" }, { "type": "GITHUB", "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin" "sourceIdentifier": "source2" } ], "secondaryArtifacts": [ { "type": "S3", "location": "output-bucket", "artifactIdentifier": "artifact1" }, { "type": "S3", "location": "other-output-bucket", "artifactIdentifier": "artifact2" } ], "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

プライマリソースは、source 属性で定義されます。他のすべてのソースはセカンダリソースと呼ばれ、 の下に表示されますsecondarySources。 すべてのセカンダリソースは、独自のディレクトリにインストールされます。このディレクトリは、組み込みの環境変数 に保存されますCODEBUILD_SRC_DIR_sourceIdentifer。 詳細については、「」を参照してくださいビルド環境の環境変数

secondaryArtifacts 属性には、アーティファクトの定義のリストが含まれます。これらのアーティファクトは、secondary-artifacts ブロック内にネストされている buildspec ファイルの artifacts ブロックを使用します。

buildspec ファイル内のセカンダリアーティファクトは、アーティファクトと同じ構造を持ち、アーティファクト識別子で区切られます。

注記

CodeBuildAPI では、セカンダリアーティファクトartifactIdentifierの は、 CreateProjectと で必須の属性ですUpdateProject。 セカンダリアーティファクトを参照するために使用される必要があります。

前述の JSON 形式の入力を使用すると、プロジェクトの buildspec ファイルは次のようになります。

version: 0.2 phases: install: runtime-versions: java: openjdk11 build: commands: - cd $CODEBUILD_SRC_DIR_source1 - touch file1 - cd $CODEBUILD_SRC_DIR_source2 - touch file2 artifacts: secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR_source1 files: - file1 artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - file2

sourceVersion属性で API を使用して、プライマリソースのバージョンを上書きすることができますStartBuild。 1 つ以上のセカンダリソースバージョンを上書きするには、secondarySourceVersionOverride属性を使用します。

AWS CLI の start-build コマンドへの JSON 形式の入力は次のようになります。

{ "projectName": "sample-project", "secondarySourcesVersionOverride": [ { "sourceIdentifier": "source1", "sourceVersion": "codecommit-branch" }, { "sourceIdentifier": "source2", "sourceVersion": "github-branch" }, ] }

ソースサンプルがないプロジェクト

ソースを設定するときに、「NO_SOURCE」ソースタイプを選択することによって CodeBuild プロジェクトを構成できます。ソースタイプが NO_SOURCE である場合、プロジェクトにはソースがないため、buildspec ファイルを指定することはできません。代わりに、CLI の create-project コマンドに対する JSON 形式の入力の buildspec 属性で、YAML 形式の buildspec 文字列を指定する必要があります。次のように指定します。

{ "name": "project-name", "source": { "type": "NO_SOURCE", "buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - command" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL", }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

詳細については、を参照してください ビルドプロジェクトの作成 (AWS CLI)

CodeBuild への複数のソース入力を使用して複数の出力アーティファクトを作成するパイプラインの作成方法については、「 AWS CodePipeline を CodeBuild の複数の入力ソースおよび出力アーティファクトと統合するサンプル 」を参照してください。