WerckerからCoverallsを動かす
WerckerにCoverallsを設定したときのメモです。
上記のページではCoverallsのサポートするCI一覧にWerckerがありませんが、できないわけではありません。
It’s easy to support Coveralls on your CI server, all that’s needed are these environment variables to be available at build time:
CI_NAME CI_BUILD_NUMBER CI_BUILD_URL CI_BRANCH CI_PULL_REQUEST (optional)
とあるように適切に環境変数をセットしてあげれば、WerckerからCoverallsにカバレッジを送信することができます。
設定
以下のように wercker.yml
に環境変数を設定します。
wercker.yml
build:
steps:
# ...
- script:
name: rspec
code: |
CI_NAME=wercker \
CI_BUILD_NUMBER=$WERCKER_BUILD_ID \
CI_BUILD_URL=$WERCKER_BUILD_URL \
CI_BRANCH=$WERCKER_GIT_BRANCH \
bundle exec rspec
CIのビルド周りの環境変数はWerckerの環境変数をよしなに設定しています。
もうひとつ、Coverallsのトークン用環境変数 COVERALLS_REPO_TOKEN
をシークレットの環境変数として別途設定する必要があります。
WerckerではProtected Variablesでシークレットの環境変数を設定できるので、そちらを利用します。
Rubyでの設定について
以下はRubyでCoverallsを使用する際のメモになります。
.coveralls.yml
は使わない
RubyのCoveralls用Gemであるcoveralls-rubyでは、 .coveralls.yml
に以下のように値を設定することで、環境変数設定をしなくて済むようになります。
service_name: travis-pro
repo_token: ...
が、実質 service_name
の値はTravisしかサポートしていないので特段のメリットはありません。
また、 repo_token
の値にはCoverallsのトークンの値をセットしますが、この値の読み込みは、実装上、RailsのCredentialsなどを使って読み込むことができません・・・。
ならば、CIのシークレット環境変数にセットした方がよっぽどシンプルに安全性を担保することができます。
RubyGemsではなく、GitHubのものを使おう
coveralls-rubyは比較的開発はされている印象ですが、どういうわけかRubyGems側にリリースがされていません。
そのため、GitHubのリポジトリのものを使うのがよさそうです。
coveralls-ruby-rebornというフォークのGemもあるのですが、こちらはちゃんとこまめにリリースがされています(試していない)。
Discussion