LoginSignup
4
1

More than 5 years have passed since last update.

ecrにdocker imageを上げるのを毎回手動でやるのは結構疲れます。ですのでtravis-ciを使って自動化しました。

.travis.ymlを作成する

まず、このgistをそのままコピーして.travis.ymlを作成しました。

awsの環境変数を追加する

ecrにdocker imageをpushするためには AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYが必要です。これをそのまま.travis.ymlに書くのはまずいので暗号化して.travis.ymlに追加します。そのために travisgemをインストールします。 travisgemをが環境変数の暗号化から.travis.ymlへの追加までうまくやってくれます。便利です。

$ gem install travis
$ travis encrypt AWS_ACCESS_KEY_ID=AKIxxxxx --add
$ travis encrypt AWS_SECRET_ACCESS_KEY=Apxxxxxxxxx --add

これで.travis.ymlに以下のように暗号化された環境変数が追加されました。

env:
  global:
    - secure: xxxxx
    - secure: xxxxx

参考: https://docs.travis-ci.com/user/encryption-keys/

masterにマージされた時だけビルドする

このままではfeatureブランチでもpushされると勝手にbuild&pushされてしまって問題なのでmasterブランチにマージされた時のみbuild&pushされるようにします。

travis-ciでは特定ブランチのみで.travis.ymlに書かれたスクリプトを動かすことができるのですが、これを使うと他のテストも走らなくなってしまいます(https://docs.travis-ci.com/user/customizing-the-build) 。これは問題なので別の手段をとります。

CIが走っているブランチは $TRAVIS_BRANCHという環境変数に格納されているのでこの値をチェックしてコマンドを実行するようなスクリプトを書きます。

# script/travis-docker-setup.sh
if [[ "$TRAVIS_BRANCH" == "master" ]]; then
  docker --version
  pip install --user awscli
  export PATH=$PATH:$HOME/.local/bin
  eval $(aws ecr get-login --region ap-northeast-1)
  docker build -t xxx -f Dockerfile.production .
  docker tag grow_turf:latest 12345.dkr.ecr.ap-northeast-1.amazonaws.com/xxx:latest
  docker push 12345.dkr.ecr.ap-northeast-1.amazonaws.com/xxx:latest
fi

そして.travis.ymlの after_successを以下のようにします。

# .travis.yml
acter_success:
  - ./script/travis-docker-setup.sh

そして最後にsettingsより Build branch updatesをオンにします。

Screen Shot 2017-04-05 at 16.37.44.png

これでmasterのみでdocker buildとdocker pushが走るようになります。

参考: http://stackoverflow.com/questions/34591587/travis-conditional-on-branch-after-success

これであとはslack連携なんかすればいい感じになります。

.travis.yml

最後に、できた.travis.ymlは以下のようになりました。(travis-docker-setup.shは上で書いたやつそのまんまです)

sudo: required
language: ruby
services:
- docker
install:
- echo "install nothing!"
script:
- rspec
after_success:
- "./script/docker-setup.sh"
env:
  global:
  - secure: longString
  - secure: longString
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1