CodeBuild を使用してソースコードをビルドするパイプラインを作成するには、次の手順を実行します。
AWS CLI を使用して、ビルドされたソースコードをデプロイする、または、ソースコードのテストのみを行うパイプラインを作成するには、AWS CodePipeline ユーザーガイドのパイプラインの編集 (AWS CLI) および CodePipeline のパイプライン構造リファレンスを参照してください。
-
CodeBuild でビルドプロジェクトを作成または識別します。詳細については、「ビルドプロジェクトの作成」を参照してください。
重要
ビルドプロジェクトは、ビルド出力アーティファクトの設定を定義する必要があります (ただし、CodePipeline によって上書きされます)。詳細については、「
artifacts
」で ビルドプロジェクトの作成 (AWS CLI) の説明を参照してください。 -
このトピックで説明している IAM エンティティの 1 つに対応する AWS アクセスキーと AWS シークレットアクセスキーで AWS CLI を設定していることを確認してください。詳細については、AWS Command Line Interface ユーザーガイドの AWS Command Line Interface のセットアップを参照してください。
-
パイプラインの構造を表す JSON 形式のファイルを作成します。ファイルに
create-pipeline.json
のような名前を付けます。たとえば、この JSON 形式の構造では、S3 入力バケットを参照するソースアクションと CodeBuild を使用するビルドアクションを使用してパイプラインを作成します。{ "pipeline": { "roleArn": "arn:aws:iam::
<account-id>
:role/<AWS-CodePipeline-service-role-name>
", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "S3Bucket": "<bucket-name>
", "S3ObjectKey": "<source-code-file-name.zip>
" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "default" } ], "configuration": { "ProjectName": "<build-project-name>
" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<CodePipeline-internal-bucket-name>
" }, "name": "<my-pipeline-name>
", "version": 1 } }この JSON 形式のデータは以下のようになっています。
-
roleArn
の値は、前提条件の一部として作成または特定した CodePipeline のサービスロールの ARN と一致する必要があります。 -
S3Bucket
のS3ObjectKey
とconfiguration
の値は、ソースコードの保存先が S3 バケットであることを前提としています。その他のソースコードのリポジトリタイプの設定については、AWS CodePipeline ユーザーガイドの CodePipeline のパイプライン構造リファレンスを参照してください。 -
ProjectName
の値は、この手順の前半で作成した CodeBuild ビルドプロジェクトの名前です。 -
location
の値は、このパイプラインで使用する S3 バケットの名前です。詳細については、AWS CodePipeline ユーザーガイドの CodePipelineのアーティファクトストアとして使用する S3 バケットのポリシーを作成するを参照してください。 -
name
の値は、このパイプラインの名前です。すべてのパイプラインの名前はアカウントに対して一意である必要があります。
このデータにはソースアクションとビルドアクションのみが記述されていますが、テスト、ビルド出力アーティファクトのデプロイ、AWS Lambda 関数の呼び出しなどに関連したアクティビティのためにアクションを追加できます。詳細については、AWS CodePipeline ユーザーガイドの AWS CodePipeline のパイプライン構造リファレンスを参照してください。
-
-
JSON ファイルが保存されているフォルダに切り替え、 CodePipeline の「create-pipeline」コマンドを実行し、ファイル名を指定します。
aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
注記
パイプラインは、CodeBuild がサポートされている AWS リージョンで作成する必要があります。詳細については、「Amazon Web Services 全般のリファレンス」の「AWS CodeBuild」を参照してください。
JSON 形式のデータが出力に表示され、CodePipeline がパイプラインを作成します。
-
パイプラインのステータスに関する情報を取得するには、パイプラインの名前を指定して CodePipeline の get-pipeline-state コマンドを実行します。
aws codepipeline get-pipeline-state --name
<my-pipeline-name>
出力で、ビルドが成功したことを確認する情報を探します。省略記号 (
...
) は、簡潔にするために省略されたデータを表すために使用されます。{ ... "stageStates": [ ... { "actionStates": [ { "actionName": "CodeBuild", "latestExecution": { "status": "SUCCEEDED", ... }, ... } ] } ] }
このコマンドをあまりに早く実行すると、ビルドアクションに関する情報が表示されないことがあります。パイプラインがビルドアクションの実行を終了するまで、このコマンドを複数回実行する必要があります。
-
ビルドが成功したら、次の手順に従ってビルド出力アーティファクトを取得します。https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 注記
ビルド出力アーティファクトを取得するには、CodeBuild コンソールの関連するビルドの詳細ページで [ビルドアーティファクト] リンクを選択することもできます。このページを表示するには、この手順の残りのステップを省略して、「ビルドの詳細の表示 (コンソール)」を参照してください。
-
バケットのリストで、パイプラインで使用されるバケットを開きます。バケット名は、
codepipeline-
の形式に従う必要があります。バケット名は、<region-ID>
-<random-number>
create-pipeline.json
ファイルから取得するか、CodePipelineの get-pipeline コマンドを実行して取得できます。aws codepipeline get-pipeline --name
<pipeline-name>
出力では、
pipeline
オブジェクトにはartifactStore
オブジェクトが含まれ、それには、バケットの名前とlocation
の値が含まれます。 -
パイプラインの名前と一致するフォルダを開きます (例:
)。<pipeline-name>
-
そのフォルダで、
default
という名前のフォルダを開きます。 -
ファイルの内容を展開します。そのフォルダに複数のファイルがある場合は、[Last Modified] タイムスタンプが最新であるファイルの内容を抽出します。(システムの ZIP ユーティリティで操作できるように、必要に応じて、ファイルに
.zip
拡張子を付けます。) ビルド出力アーティファクトは、展開されたファイルの内容に含まれます。