うなすけとあれこれ

2016年12月14日

このblogのCIをCircle CIからwerckerに変更しました

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が実行されるようにしています。

workflow設定

どのくらい速くなったのか

build ci

deployが発生しない、通常のciが終わるまでに要した時間を適当に5つ抜き出してみました。

circle ci

だいたい3分間といったところ。

wercker

ほぼ1分間という感じ。

deploy ci

deployが発生する場合に、deploy終了までどれだけの時間を要したかを適当に5つ抜き出してみました。

circle ci

これもだいたい3分から4分の間。1回だけ13:06かかったことがあり謎。

wercker

werckerに移行してからあまりdeployしてないのでサンプルが少ないですが、早くなっています。

参考

Tweet
2016年12月14日