Amazon Web Services ブログ

AWS CodeBuild ― フルマネージドのビルドサービス

開発者は通常、ソースコードの変更に対する継続的インテグレーションのビルドとテストを実行するために、共有のビルドサーバを構築し運用しなければいけません。継続的インテグレーションを運用するのは面倒なことなので、多くの開発者はそれを避けてローカルマシンでビルドを実行します。これによって、ある開発者の環境では動作するコードが最終的な本番環境ビルドで動作しないという状況が、しばしば引き起こされます。

多くの開発チームは、CI/CD(継続的インテグレーション / 継続的デプロイ)パイプラインの構成要素としてビルドファームを構築します。ビルドファームの構築と運用はコストが高く、また独特のスキルが求められます。普段はビルドファームはあまり使われていませんが、修羅場の時には利用率は100%に達し、未処理のビルドリクエストが増えてしまいます。

AWS CodeBuildのご紹介

今日はこれらの課題を解決するAWS CodeBuildを紹介します。あなたは、ビルドサーバ群を構築し、スケーリングさせ、そしてパッチの管理をするのに時間を費やす代わりに、CodeBuildを利用することができます。CodeBuildによって、一貫性の欠如や不整合などの問題の多くが回避されるとともに、あなたの開発プロセスが合理化されます。事前にサーバをプロビジョニングさせておく必要はありません。CodeBuildは、処理待ちのビルドを積み上げるのではなく、ビルドボリュームを十分にスケールさせます。ビルドリソースは分単位の課金です。1分あたり$0.005(0.5セント)の料金で課金され、使用した分だけを支払います。

CodeBuildはマネージドのビルドサービスです。弾力性があり、スケーラブルで、そして使いやすいです。利用を開始するのに、ビルドの実行に必要な情報を入れてビルドプロジェクトを作成する以外に必要な作業はありません。必要な情報は以下の要素です:

  • ソースリポジトリ ― ソースコードの場所(AWS CodeCommitリポジトリ、GitHubリポジトリ、あるいはS3のバケット)
  • ビルド環境 ― 言語 / 実行環境(Android、Java、Python、Ruby、Go、Node.js、あるいはDocker)
  • IAMロール ― 特定のAWSのサービスやリソースにアクセスするための権限をCodeBuildに付与します
  • ビルドスペック ― 一連のビルドコマンドをYAML形式で
  • コンピュートタイプ ― 必要とされるコンピュートパワーとメモリの量(最大で15GBのメモリと8vcpu)

CodeBuildはそれぞれのビルドを、新鮮で隔離されたコンテナベースの環境で実行します。これがその中身です:

  1. ビルドプロジェクトで指定されたビルド環境に基いてコンテナを起動します。Android、Java、Python、Ruby、Go、Node.js、そしてDocker(Dockerイメージをビルドするための)〜のビルド環境が標準で提供されています。Docker HubEC2 Container registryから既存のDockerイメージを使用することもできます。標準のビルド環境にはAWS SDKやAWS Command Line Interface(CLI)も入っています。
  2. ビルドプロセスにおける全てのコマンドライン出力をキャプチャしコンソールに流します。
  3. ビルドプロジェクトで指定されたソースリポジトリからソースコードを取得します。
  4. ビルドプロジェクト内でいくつかのコマンドを実行します。このコマンドには、インストール、ビルドの事前処理、ビルド処理、そしてビルドの事後処理が含まれ、そのビルドプロジェクトのビルドスペックに全て明示されます。
  5. 実行可能ファイルかあるいはその他の成果物をS3にアップロードします。このファイルに対してAWS Key Management Service (KMS)の暗号化を適用することも可能です。
  6. このビルドに使用されたコンテナを破棄します。

AWS CodePipelineのビルドプロバイダとしてCodeBuildを利用することも可能であり、これは既存のCI/CDプロセスへの理想的な統合です。CodeBuildは、S3 や AWS Identity and Access Management (IAM)などの他のAWSのサービスを利用することができます。

標準のビルド環境には、AWS CLIとAWS SDKが含まれています。これにより、CodePipelineAWS SAMを使用して、サーバレスアプリケーションのための完全に自動化されたCI/CDワークフローを作成することが可能です。npmpipのパッケージングをやめて、AWS CLIを使用してそれらをパッケージングすることが可能です。すると、デプロイに際して全て準備された状態となります。

全てのCodeBuildの機能が、AWSマネジメントコンソール、API、あるいはAWS Command Line Interface (CLI)からアクセス可能です。

AWS CodeBuild イン・アクション

AWS CodeBuildの詳細な使い方を完全に説明する時間がないのですが、このサービスの機能のざっくりとした印象を掴んでもらうためにいくつかのスクリーンショットを貼りました。

ビルドプロジェクトの一覧:

個別のビルドの詳細情報:

ビルド履歴:

AWS CodeBuildAWS CodePipelineのビルドプロバイダとして使用:

今から利用可能

AWS CodeBuildは今現在利用可能で、今日から使い始められます!まずはLinux環境のビルドをサポートしており、近いうちにWindows環境のサポートを追加する予定です。

Jeff;(翻訳はSA畑が担当しました。原文はこちら