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