🙄

WerckerからCoverallsを動かす

2021/10/02に公開

WerckerにCoverallsを設定したときのメモです。

https://docs.coveralls.io/supported-ci-services

上記のページでは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の環境変数をよしなに設定しています。
https://devcenter.wercker.com/administration/environment-variables/#available-environment-variables

もうひとつ、Coverallsのトークン用環境変数 COVERALLS_REPO_TOKEN をシークレットの環境変数として別途設定する必要があります。

WerckerではProtected Variablesでシークレットの環境変数を設定できるので、そちらを利用します。

https://devcenter.wercker.com/administration/environment-variables/creating-env-vars/

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