CircleCIのビルドが遅い問題
codenize-toolsを利用して、AWSまわりの設定をリポジトリで管理しているが、
設定のチェック、デプロイに時間がかかっていた。
=> 2.0のDocker対応で解決しよう!!
CustomImageを作ってみる
CircleCIはCustomのDockerImageをサポートしています。
saorio/codenize_tools_circleciような、DockerImageを作ります。
内容としては、
- circleCIの公式イメージ ※ここではruby2.2系を使用。
- codenize-toolsのgem一式をインストール
Dockerfile
FROM circleci/ruby:2.2.7
WORKDIR /root/
ADD work work
COPY work/Gemfile $WORKDIR
RUN sudo apt-get update && sudo apt-get upgrade -y
RUN sudo apt-get install -y libpcap-dev
WORKDIR /root/work/
RUN sudo bundle install
CircleCI公式を使った方が、よく使われるライブラリなどが入っててOSの公式を使うよりDockerfileがシンプルになって良いのでこちらを利用しています。
これをpullしてきて使うcircle.ymlを書く。
circle.yml
version: 2
jobs:
build:
docker:
- image: saorio/codenize_tools_circleci:latest
working_directory: ~/<your-repository-name>
environment:
AWS_REGION: us-east-1
steps:
- checkout
- run:
name: miam dry-run
command: |
miam --dry-run --apply -f IAMfile --region ${AWS_REGION} --no-color --no-progress
- deploy:
name: miam deploy
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
miam --apply -f IAMfile --region ${AWS_REGION} --no-color --no-progress
fi
そのままAWSにdeployするなら --dry-run
を外してdeploy可能。
長い時で3分くらいかかっていたのが10秒程度になりました