2018年9月19日

AWS CodeBuildをローカル環境で動かす

Share

AWS CodeBuildとは

CodeBuildは使ったことはありましたが、検証が面倒くさいところがありました。

ビルド自体は動き出すとなかなか変更する機会がなく、今回ようやくローカル環境でのテストを試すことになりました。

ちなみに、CodeBuildとは、

AWS CodeBuild とは

AWS CodeBuild はクラウドで動作する、完全マネージド型のビルドサービスです。AWS CodeBuild はソースコードをコンパイルし、単体テストを実行して、すぐにデプロイできるアーティファクトを生成します。AWS CodeBuild により、独自のビルドサーバーのプロビジョニング、管理、スケーリングが不要になります。Apache Maven、Gradle などの最も一般的なプログラミング言語とビルドツール用のパッケージ済みのビルド環境を提供します。AWS CodeBuild のビルド環境をカスタマイズして、独自のビルドツールを使用することもできます。AWS CodeBuild はピーク時のビルドリクエストに合わせて自動的にスケーリングします。

CodeBuildの使い方は、公式のリファレンスを見るとわかりやすく説明されています。

AWS CodeBuild のビルド仕様に関するリファレンス

AWS CodeBuild のビルド環境リファレンス

実行環境

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.6
BuildVersion:	17G2307

$ docker -v
Docker version 18.06.1-ce, build e68fc7a

準備

Announcing Local Build Support for AWS CodeBuild

Github aws/aws-codebuild-docker-images

を参考に進めます。

イントール

$ git clone https://github.com/aws/aws-codebuild-docker-images.git

build Docker image

今回は簡単な動作検証なので、ubuntu-baseを使って試します。

AWS CodeBuild に用意されている Docker イメージ

$ git clone https://github.com/aws/aws-codebuild-docker-images.git
$ cd aws-codebuild-docker-images/ubuntu/ubuntu-base/14.04
$ docker build -t aws/codebuild/ubuntu-base:14.04 .

ビルドは結構時間かかります。。

Successfully tagged aws/codebuild/ubuntu-base:14.04

が出たら完了。

Docker Run

3つの環境変数を設定します

IMAGE_NAME: The name of your build environment image.

先程作ったdocker imageですね。aws/codebuild/ubuntu-base:14.04

SOURCE: The absolute path to your source code directory.

ソースコードのパスです。今回は~/codebuild/sourceにします。ここにbuildspec.ymlをおいておきます。

ARTIFACTS: The absolute path to your artifact output folder.

ビルドの成果物を出力されるパスです。今回は~/codebuild/artifactsにします。

今回は簡単な検証なので、buildspec.ymlは以下のようなものにします。

version: 0.2

phases:
  install:
    commands:
      - apt-get update -y
  build:
    commands:
      - echo "codebuild local test" > $CODEBUILD_SRC_DIR/output.txt
artifacts:
  base-directory: $CODEBUILD_SRC_DIR
  files:
    - output.txt
$ docker run -it -v /var/run/docker.sock:/var/run/docker.sock \
-e "IMAGE_NAME=aws/codebuild/ubuntu-base:14.04" \
-e "ARTIFACTS=/Users/*******/codebuild/artifacts" \
-e "SOURCE=/Users/*******/codebuild/source" \
amazon/aws-codebuild-local

実行結果を見てみると、

$ cd /Users/*******/codebuild/artifacts/
$ ls
artifacts.zip
$ unzip artifacts.zip
Archive:  artifacts.zip
  inflating: output.txt
$ cat output.txt
codebuild local test

出力ファイルが取得できました!