AWS CodeBuildのビルド環境であれこれする
最近質の下がってきた記事に一役買うために、クソ記事を投稿。
CodeBuildの中でJSTを扱おうとして困ったので、いろいろ調べているうちにいろいろカスタマイズできることがわかったので備忘録。
CodeBuild
AWS CodeBuildはフルマネージドなビルドサービスで、ビルドサーバーのプロビジョニング、管理、スケーリングが不要。ある程度構築された(dockerなど)ビルド用のイメージを使用して、その中にソースコードをチェックアウトして、すぐにビルド環境を作ることができる。基本的に buildspec.yml (ファイル名は指定可能)で、ビルド用イメージのカスタマイズなどが行える。
CircleCIの circle.yml
と同じようにLinux上でのコマンドでできることは大体できる。(baseのイメージがubuntuなので)CircleCIほどUIなどは高機能ではないが、簡単なことなら楽に実現できる。
カスタマイズする
まず、ビルドで利用するDockerイメージを選択する。デフォルトで選択できる、それぞれのDockerイメージのDockerfileは、こちらで公開されている(このDockerイメージもCodeBuildでビルドされるようだ)。これらのイメージはdocker hubにも公開されているため、手軽に同じ環境を使用できる。また、他の場所からイメージをPullしてきて使うこともできる。
イメージのカスタマイズはbuildspecについてのリファレンスを見るとわかるが、ビルドは各段階に分かれている、それぞれの段階で、Linuxのコマンドや、aws cliのコマンドを実行することができるので、buildspeckにコマンドを記載するだけで、様々なカスタマイズが行える。
今回の例では、Githubからソースコードをチェックアウトして、 docker build
を行い、ECRにイメージをPushする。buildしたイメージにJSTの日時でタグを打つのだが、ビルド環境ではUTCなため、JSTの環境にしてからタグを付けるようにした。
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
- echo Prepare JST locale
- apt-get install -y tzdata
- ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- export TAG=`date "+%Y%m%d-%H%M"`
- echo Prepare tag $TAG
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $IMAGE_REPO_NAME:$TAG .
- docker tag $IMAGE_REPO_NAME:$TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG
- echo Writing image definitions file...
- printf '[{"name":"marquee","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$TAG > imagedefinitions.json
artifacts:
files: imagedefinitions.json
その他のカスタマイズ
以下のGithub検索で、いろいろ見つかるかもしれない
https://github.com/search?q=filename%3A%7Bbuildspec.yml%7D&type=Code
Author And Source
この問題について(AWS CodeBuildのビルド環境であれこれする), 我々は、より多くの情報をここで見つけました https://qiita.com/tfunato/items/4c595c68e82d4cf761a1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .