CodeBuildをローカル環境で実行する(2019年6月版)


現在作成中のAlexaスキルではAWSのCodeBuildを利用しています。ただ、ビルドを試すのに毎回GitHubのリポジトリにPushしないといけないため、ローカルで試すことができなかと思い、調べた結果を共有します。

実行環境

OS : macOS Mojave (v10.14.5)
Docker : Engine: 18.09.2

ビルド用の Docker イメージ作成

GitHubで公開されているDockerfileを取得し、そこからイメージを作成

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

ビルド実行用のイメージのダウンロード

ビルド実行用のエージェントイメージをDockerHubから取得

$ docker pull amazon/aws-codebuild-local:latest --disable-content-trust=false

ビルド用のヘルパースクリプト取得

aws-codebuild-docker-imagesのGitHubリポジトリにビルド用のヘルプスクリプトが用意されているためそこから取得

$ //GitHubからcloneした続きから
$ cd aws-codebuild-docker-images
$ cd local_builds
$ cp codebuild_build.sh [対象のプロジェクトフォルダ]

buildspec.ymlの修正

以下のランタイムの記載を追記する(下記はPythonの場合)

phases:
  install:
    runtime-versions:
        python: 3.7

ビルド実行

ヘルパースクリプトでビルドを実行

$ ./codebuild_build.sh -i aws/codebuild/standard:2.0 -a artifact

CodeBuildの設定変更

AWS管理コンソールからCodeBuildの環境を変更する。
CodeBuild -> ビルドプロジェクト -> [プロジェクト名] -> 環境 を編集する

以下のように、オペレーティングシステム、ランタイム、イメージを設定する

また、「AWS CodeBuild にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする」 のチェックを外すこと

参考