AWS CodeBuild
ソースコードのビルド・テストを自動実行するフルマネージドビルドサービス
何ができるか
AWS CodeBuild は、ソースコードのコンパイル、テスト実行、デプロイ用パッケージの作成を自動化するフルマネージドのビルドサービスです。ビルドサーバーの構築や管理が不要で、ビルドリクエストに応じて自動的にコンピューティングリソースが割り当てられます。複数のビルドを同時に実行でき、ビルドキューの待ち時間が発生しません。Docker イメージのビルドにも対応しており、ECR へのプッシュまで一連の流れを自動化できます。
どのような場面で使うか
アプリケーションのコンパイルとユニットテストの自動実行、Docker コンテナイメージのビルドと ECR へのプッシュ、静的サイトのビルドと S3 へのデプロイ、セキュリティスキャンやコード品質チェックの自動化、Lambda 関数のパッケージングとデプロイ準備など、ソフトウェアのビルドプロセスを自動化したい場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
出版社の印刷工場に例えるとわかりやすいでしょう。原稿 (ソースコード) を渡すと、校正 (テスト)、組版 (コンパイル)、製本 (パッケージング) を自動で行い、完成品を届けてくれます。印刷機の台数は注文量に応じて自動調整されるため、繁忙期でも待たされることがありません。
CodeBuild とは
AWS CodeBuild は、ソースコードのビルドとテストを自動化するフルマネージドサービスです。従来、ビルドサーバーを自前で構築・運用するには、Jenkins サーバーの管理、プラグインの更新、ビルドキューの監視など多くの手間がかかりました。CodeBuild はこれらをすべて AWS に委任し、buildspec.yml というファイルにビルド手順を記述するだけで、再現性のあるビルド環境を実現します。
主な特徴
CodeBuild はビルドごとに独立したコンテナ環境を起動するため、ビルド間の干渉がありません。AWS が提供するマネージドイメージ (Ubuntu、Amazon Linux、Windows) のほか、カスタム Docker イメージを使用することもできます。ビルドの同時実行数に制限がなく、複数のプロジェクトが同時にビルドを実行しても待ち時間が発生しません。ビルドキャッシュ機能により、依存パッケージのダウンロードを省略してビルド時間を短縮できます。
buildspec.yml の構成
ビルドの手順は buildspec.yml ファイルに YAML 形式で記述します。install フェーズでランタイムや依存パッケージをインストールし、pre_build フェーズでテスト準備やログインを行い、build フェーズでコンパイルやテストを実行し、post_build フェーズでデプロイ用パッケージを作成します。artifacts セクションでビルド成果物の出力先を指定し、cache セクションでキャッシュ対象を定義します。環境変数は buildspec 内で定義するか、Systems Manager Parameter Store や Secrets Manager から安全に取得できます。
料金体系
CodeBuild の料金はビルドの実行時間に基づく従量課金です。コンピューティングタイプ (small、medium、large、2xlarge) ごとに分単位の料金が設定されており、ビルドが実行されていない時間には課金されません。毎月 100 分のビルド時間が無料枠として提供されます。ARM ベースのインスタンスを選択すると、x86 と比較して約 20% 安価にビルドを実行できます。
注意点
- buildspec.yml はリポジトリのルートに配置し、バージョン管理すること。ビルド手順の変更履歴を追跡できる
- ビルドキャッシュを S3 に保存する設定を有効にすると、npm install や pip install の時間を大幅に短縮できる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。