何をやるか?
CodeBuild は AWS が提供するビルドサービスです。
例えば、GitHub に buildspec.yml
というビルド方法を記述したファイルを置いておくと、GitHub へのコードプッシュ時に、その設定通りビルドを行ってくれます。
GitHub Actions や Azure Pipelines といったサービスと同様です。
ここでは、CodeBuild 導入の第一歩として、次のような構成でセットアップしてみます。
- ソースプロバイダ : GitHub(の適当なテストリポジトリ)
- ビルド内容 : “Hello World” と echo 表示する
つまり、テスト用の GitHub リポジトリに何らかのファイルをプッシュしたときに、CodeBuild によるビルドを開始するところまでです。
ソースプロバイダとしては、GitHub だけではなく、AWS CodeCommit、Bitbucket、GitHub Enterpise といった Git リポジトリを選択できますが、おそらく GitHub が一番よく使われているので、ここでは GitHub を使うことにします。
最初の一歩はできるだけ簡単に済ませることが肝心です!
アカウントとリポジトリを準備する
まず最低限の準備として、下記のアカウントは用意できているとします。
- AWS アカウント
- GitHub アカウント
次に、GitHub にテスト用の リポジトリを作成 しておきます。
ここでは、リポジトリ名は hello-codebuild
とでもしておきます。
README.md
を自動生成しておくと、後のテストが楽です。
CodeBuild にビルドプロジェクトを作成する
次のようにして、CodeBuild に新規ビルドプロジェクトを作成します。
- AWS CodeBuild console を開きます。
ビルド (CodeBuild)
→ビルドプロジェクト
→ビルドプロジェクトを作成する
と選択します。- 以下のような内容を入力してビルドプロジェクトを作成します。
- プロジェクト名
:
build-hello
(名前は自由) - ソースプロバイダ
:
GitHub
→ 作成しておいたhello-codebuild
リポジトリを指定 - ウェブフック
:
コードの変更がこのレポジトリにプッシュされるたびに再構築する
にチェックを入れる(これで GitHub へのプッシュ時にビルドトリガがかかります) - 環境イメージ
:
マネージド型イメージ
→Amazon Linux 2
→ ランタイムやイメージは適当に選択 - サービスロール
:
新しいサービスロール
→codebuild-build-hello-service-role
(デフォルト) - ビルド仕様
:
buildspec ファイルを使用する
- プロジェクト名
:
以下のような感じでビルドプロジェクトが作成されれば成功です。

ビルド仕様ファイル (buildspec.yml) を作成する
ビルドプロジェクトの作成直後に、おもむろに ビルドを開始
のボタンを押すと、ビルドは見事に失敗します。
ビルド履歴
で対象のビルドを選択してビルドログを見ると、次のようなエラーが出力されていることが分かります。
[Container] 2021/01/26 15:32:21 Phase context status code: YAML_FILE_ERROR Message: YAML file does not exist
エラーを見るときは、フェーズ詳細
のタブの方がパッと見で分かりやすいかもしれません。
どのフェーズまでうまく進んだかが一目瞭然です。

このエラーは、リポジトリのルートにビルド仕様ファイル buildspec.yml
が存在しないというエラーです。
そこで、次のような内容の buildspec.yml
ファイルを作成して GitHub へプッシュします。
あるいは、GitHub サイト上で直接ファイルを作っちゃっても OK です。
version: 0.2
phases:
install:
commands:
- echo 'Hello World (INSTALL phase)'
pre_build:
commands:
- echo 'Hello World (PRE_BUILD phase)'
build:
commands:
- echo 'Hello World (BUILD phase)'
post_build:
commands:
- echo 'Hello World (POST_BUILD phase)'
CodeBuild によるビルドは、INSTALL
→ PRE_BUILD
→ BUILD
→ POST_BUILD
のようにフェーズが進んでいくのですが、ここではそれらの各フェーズで echo 出力をしています。
buildspec の構文はこちらのドキュメント で確認できます。
buildspec.yml
ファイルを GitHub リポジトリのトップディレクトリに作成(あるいはプッシュ)すると、ウェブフックイベントにより CodeBuild のビルドが開始されます。
今度は buildspec ファイルが見つかるので、次のようにビルドが正常に実行されることが分かります(実際のログはもう少しいろいろ情報が表示されます)。
Hello World (INSTALL phase)
Hello World (PRE_BUILD phase)
Hello World (BUILD phase)
Hello World (POST_BUILD phase)
これで AWS CodeBuild の Hello World は完了です!お疲れ様でした!