現在作成中の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 にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする」 のチェックを外すこと
##参考
- aws-codebuild-docker-images
- [CodeBuild Local で CodeBuild の処理をローカル実行](CodeBuild Local で CodeBuild の処理をローカル実行)
- CodeBuild をローカル環境で実行(テスト、デバッグ)できるようになりました
- CodeBuildのUbuntu 14.04 EOL対応