このblogのCIをCircle CIからwerckerに変更しました
やぎすけ Advent Calendar
やぎすけ Advent Calendar 2016 - Adventar
14日目です。大半がやぎにいなのでプレッシャァ。
Circle CIへの不満
遅い
無料のci serviceに言う文句じゃない気もしますが、とにかくtestがpassするまでの時間が長いと感じていました。
たとえばRubyの2.3.3など、わりと新しめのversionを使おうとすると毎回インストールを実行するので時間がかかります。
werckerなら速そう
そこでwerckerを選択しました。werckerはciを実行する環境がdocker containerの中になるので、適切なcontainerを 選んでやれば環境構築の手間は最低限で済みます。
werckerでmiddlemanのbuild
こちらになります。
box: ruby:2.3.3
init:
build:
steps:
- install-packages:
packages: nodejs
- bundle-install
- script:
name: middleman build
code: bundle exec middleman build
deploy:
steps:
- install-packages:
packages: nodejs rsync
- bundle-install
- add-ssh-key:
host: unasuke.com
keyname: deploy
- add-to-known_hosts:
hostname: unasuke.com
fingerprint: $FINGERPRINT
- script:
name: middleman build
code: bundle exec middleman build
- script:
name: middleman deploy
code: bundle exec middleman deploy
master branchでciが実行された場合は、deploy pipelineが実行されるようにしています。
どのくらい速くなったのか
build ci
deployが発生しない、通常のciが終わるまでに要した時間を適当に5つ抜き出してみました。
circle ci
- 02:53
- 03:19
- 02:59
- 04:45
- 03:12
だいたい3分間といったところ。
wercker
- 01:04
- 00:57
- 01:01
- 00:59
- 01:03
ほぼ1分間という感じ。
deploy ci
deployが発生する場合に、deploy終了までどれだけの時間を要したかを適当に5つ抜き出してみました。
circle ci
- 03:20
- 03:36
- 04:14
- 02:56
- 02:50
これもだいたい3分から4分の間。1回だけ13:06かかったことがあり謎。
wercker
- 2:21
- 2:26
- 2:47
werckerに移行してからあまりdeployしてないのでサンプルが少ないですが、早くなっています。
参考
2016年12月14日