AWS CodeBuildを使ってソースコードをビルドする




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には下記リンクから好きな環境を選択して指定すればいいかと思います。

http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref.html#build-env-ref-available

ビルド仕様というところでどうやってビルドするか決めることができ、その方法は2つあります。

  1. 直接コマンドを指定する
  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でアプリケーション開発をしたい方の最初に読む一冊としておすすめします。対象は初心者だけでなく上級者まで幅広く学べるので是非読んでみてください!

 

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です