Agent構成で利用していると以下のようなつらみがあります。長期間運用しているとAgentサーバのツールバージョンアップ等のメンテがつらいPushトリガーによるCI/CD環境を構築すると開発が盛り上がってるときには1日に数十回Jenkins上でビルドが走ります。Requestを投げた後にビルド中にトイレに行って返ってきたら、他の人が先にマージされてて自分のPRにConflictが発生してると「またビルドを待つのか...😇」という残念気持ちになりますよね。Agentサーバを増やすという解決策もありますがビルドサーバ分のお金がかかりますし、開発の盛り上がりに合わせて手動で上げたり下げたり都度Jenkinsの設定するのも面倒です。紹介する内容は2018年9月7日時点での内容をもとに記載しており、今後のAWSのアップデートによっては最適な解決策でなくなる場合があります。CodeBuildはAWSが提供するマネージドのコンテナビルドサービスです。詳細は公式のページに記載されていますが、要点を抜粋すると以下のような特徴があります。ECRに登録した自作のコンテナイメージも指定できる最大20並列でコンテナビルドできるかかる費用はビルド時間単位の従量課金CodeBuildはマネージドサービスのため運用コストの削減が期待できます。AgentとしてEC2を常時複数台起動させておくよりもコスト削減が望めます。何より、最大20並列で実行できるためビルドの待ち時間をほぼなくすことができます!!!ビルドで利用するコンテナイメージはAWSでデフォルトで用意されているものがありますが、ランタイムのバージョンが実環境のものと違っていたりモジュールが不足してたりするため、CI/CDで実行する内容に合わせて独自のイメージを作ってECRに登録して使うとよいでしょう。私の環境ではレポジトリとしてGitLabを使っているので、以下のような構成で連携しています。CodeBuildのビルド定義をbuildspec.ymlに記載してソースレポジトリと一緒に管理しています。CodeBuildを実行します。Pluginを使います。CodeBuildのログもJenkins側のログから見ることができます。CodeBuildのかゆいところ次に上記の構成で実際に使ってみてハマった点やTipsを紹介します。CodeBuildではビルドの成果物をArtifactとして定義することでS3に置いてくれる機能を持っています。この機能はブランチによる分岐ができません。Pipelineで使う場合には毎回ArtifactがS3にPutされてしまいます。s3コマンドでS3にPutするようにしています。CodeCommit、GitHub、BitBucketのみです。Enterpriseを選択することで連携できていますが、当然WebHookから直接起動することはできません。CodeBuildを実行することができるようになっています。GitBucketとGitLabにはIssueは立っていますが、まだ取り込まれてはいないようです。Typeによって変わります。Typeを使う場合は別途上限緩和申請が必要となります。同時実行ビルドの最大数の制限は、コンピューティングタイプによって異なります。