CodeBuildとは
AWSのマネージドサービスでソースコードのビルドができるのがCodeBuildできます。今回はSpring BootでKotlinを使ったソースコードを実際にビルドします。
環境
環境はざっくりこんな感じです。
- Kotlin v1.1.4-3
- Java v1.8.0_121
- Spring Boot v1.5.6.RELEASE
- Spring Cloud v1.2.1.RELEASE
CodeBuildのプロジェクト作成
ビルド対象
ビルドする対象のソースコードは複数から選べます。自分は今回Code Commitにソースコードを置いているのでCode Commitを選択しました。

環境とビルド方法
デフォルトだと下記のようにUbuntuがOSとして用意されています。まあこれでもいいんですが日本人はlinuxを使う人が多いと思うのでビルドマシンも合わせておきたいですよね?

別のOSを使うにはDockerイメージの指定を選択して環境タイプをLinux、カスタムイメージをその他にします。
カスタムイメージIDには下記リンクから好きな環境を選択して指定すればいいかと思います。
ビルド仕様というところでどうやってビルドするか決めることができ、その方法は2つあります。
- 直接コマンドを指定する
- ビルド方法を記述したbuildspeck.ymlというファイルをソースコードのルートディレクトリにおく
とりあえずビルドするだけの場合は下記のようにするといいです。
gradle build -x test
出力ファイルという所には生成されるファイルまでのパスを設定します。gradleの初期設定ではルートディレクトリからbuild/lib/プロジェクト名-0.0.1-SNAPSHOT.jarという風に出力されるので下記のように設定します。
./build/libs/プロジェクト名-0.0.1-SNAPSHOT.jar
これらをbuildspec.ymlで管理する場合は下記のようにしてください。コマンドが複雑になってくるときはこっちで管理するのがいいかと思います。
filesの指定は./から始めるのがきもです。
version: 0.1 phases: build: commands: - gradle build -x test artifacts: files: - ./build/libs/プロジェクト名-0.0.1-SNAPSHOT.jar

アーティファクト
いきなり聞きなれないアーティファクトという単語が出てきます。こうゆう単語が出てくるだけで最初はわけわからなくなるからやめてほしいですね。
アーティファクトとはビルドの結果として生成されるもののことを指しています。なので、jarやwarであったりファイルのことを指しています。
ここではこの成果物を最終的にS3のどこに配置するか決めれます。好きなようにフォルダ名も決めれるし、フォルダ名にビルドIDを含めることもできます。

サービスロール
サービスロールがない場合は作成にチェックを入れるだけでいいです。

VPC
ここの設定に一番ハマりました。VPCはいつも使っているものでいいです。注意すべきはサブネットの設定です。
注意書きにも書かれているのですがサブネットにNATを設定したものでなければいけません。なのでデフォルトのVPCにセットされているサブネットとは別にサブネットを作成し、そのサブネットのルートテーブルにNATを設定しなければいけません。
これに気づかず自分は結構時間を無駄にしました。。。なぜこんな設定をしなければいけないのかというと、まずCodeBuildがVPCの外にあるサービスというのが前提です。
となると、CodeBuildを使ってソースコードのテストを実行する際にVPCの中に入っていないとデータベースとかその他のリソースへのアクセスができずに色々と不都合が起こりますよね?そのためこんな設定をしなければいけないのかなと思っています。
間違っていたら教えてください。

まとめ
コードビルドは自分でビルドマシンを用意しなくていいし、CodePipelineやCodeDeployと組み合わせるとより一層強力なサービスとなるのでぜひ試してみてください。
ちなみにビルドマシンのスペックはこの中から選べますし、環境変数も設定できるので割と柔軟に使えるのではないかと思っています。

次回はCodePipelineとCodeDeployと連携する仕組みについて紹介したいと思います。
おすすめ書籍
AWSをこれから使う初心者の方から現在使っている中級者の方までおすすめできる書籍です。内容はVPC、セキュリティグループ、IAMなどの基本的なことからWEBサービスを作るのに欠かせない、EC2、RDS、Route53などの扱い方が丁寧に説明されています。
中級者向けにはWEBサーバのオートスケール、Cloud Watchを使ったモニタリング方法、セキュリティ等について解説されています。手元において困ったときに読むのにちょうどいい一冊になると思います。
Springの概要からインストール方法、各コア機能(Security, Sessionなど)の解説が体系的にまとめられています。2018年に出版されたばかりなので情報も新しいです。これからSpring Bootでアプリケーション開発をしたい方の最初に読む一冊としておすすめします。対象は初心者だけでなく上級者まで幅広く学べるので是非読んでみてください!
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す