Return to Tech/aws

AWS - CodeBuild

CodeBuild: for CI/CD

CI: Continuous Integration
CD: Continuous Delivery

Requires: 
 Source(CodeCommit|GitHub|S3|Bitbucket)
 Buildspec(.yml)
 Build for Docker Image

 サービスロール: 
 例 arn:aws:iam::ACCOUNTID:role/service-role/codebuild-foobar-service-role

[環境]
 現在の環境イメージ: aws/codebuild/amazonlinux2-x86_64-standard:3.0
 サービスロール: アカウントから既存のロールを選択するか作成する
 タイムアウト: 1時間0分 ※5分から8時間の間
 キュータイムアウト: 8時間0分 ※default8 5分から8時間

 証明書インストールしない or S3バケットから証明書をインストールする

 VPC: 選択可能
  - VPC接続により、プライベートサブネット上に分離された環境へのビルド->統合テストの実行等が可能となる

 $ aws ec2 describe-vpcs
 $ aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-1234abcd" --region REGION
 $ aws ec2 describe-security-groups --filters "Name=vpc-id,Values=vpc-1234abcd" --region REGION

 VPCとCodeBuild連携のベストプラクティス
  - パブリックサブネットに NATゲートウェイが存在すること。対象のプライベートサブネットへ接続。
   CodeBuildはパブリックのエンドポイントにアクセスできるようになります。
   CodeBuildは作成したネットワークインターフェースへのElasticIPアドレスの割り当てをサポートしていないため、NATゲートウェイやNATインスタンス必須。
  - VPCに複数のアベイラビリティーゾーンを含めます。
  - CodeBuildにはアウトバウンドトラフィックに関する特定の要件はない。Github, AmazonS3等、ビルドに必要なインターネットリソースへのアクセスを許可する必要はある。
  - ビルド用に別個のサブネットを設定する
  - VPCにアクセスするように CodeBuildプロジェクトを設定する場合、プライベートサブネットのみを選択する

[Project Settings]
 - ProjectName: buildproject01
 - Description(Optional)
 - Buildバッジ(Optional)
 - 同時ビルド制限の有効化(Optional)
 - パブリックビルドアクセス(Optional)
   このプロジェクトのログとアーティファクトなどのビルド結果を一般公開するかどうか
 - 追加設定(Tag)

[Source]
 - ソースプロバイダ
  例: AWS CodeCommit or CodePipeline

 - リポジトリ名
  例: repo001

 - リファレンスタイプ
  ソースコードを含むソースバージョンのリファレンスタイプ
  [Default] Branch
   Gitタグ
   コミットID

 - ブランチ
  ビルドするコードを含むブランチ
  例: master
 - コミットID(Optional)
  コミットIDを選択。ビルド時間の短縮(可能性あり..)

 - ソースバージョン
  例: refs/heads/master

 - 追加設定
  Gitのクローンの深さ(Optional)
  例: 1

  Gitサブモジュール(Optional)

 - サービスロールのアクセス許可
  [Check] AWS CodeBuildにこのサービスロールの編集を許可し、このビルドプロジェクトで使用可能とする
   arn:aws:iam:ACCOUNTID:role/service-role/codebuild-buildproject-name-service-role

[Buildspec]
 - ビルド仕様
  buildspecファイルを使用する
   ビルドコマンドをYAML形式のbuildspec.ymlに保存

 or ビルドコマンドの挿入
   ビルドプロジェクト設定としてビルドコマンドを保存

 Buildspec名(Optional)
  ymlファイルを別名にしたい場合ここにファイル名を入力する


[ログ]
CloudWatch: CloudWatch Logs(Optional)

S3: S3ログ(Optional)

サービスロールのアクセス許可
  [Check] AWS CodeBuildにこのサービスロールの編集を許可し、このビルドプロジェクトで使用可能とする
   arn:aws:iam:ACCOUNTID:role/service-role/codebuild-buildproject-name-service-role


Return to Tech/aws