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