RSpec + SimpleCov で計測したカバレッジレポートをGitlab Pagesにホスティングする
やること
- simplecovで、rspec で実行したテストのカバレッジレポートを出力する
- 出力したカバレッジレポートをGitlab Pagesにホスティングする
- 以下のようにプロジェクトにバッジを表示し、一目でカバレッジが分かるようにする
手順
rspecとsimplecovを導入する
すでに導入済みの場合は、適宜飛ばしてください。
gemをインストール
gem 'rspec'
gem 'simplecov'
$ bundle install
spec_helper.rb
にsimplecov
を読み込む設定を追記
require 'simplecov'
SimpleCov.start
.gitlab-ci.yml
にpages
ジョブを追加
pages
ジョブを追加します。
基本的には以下のような流れになります。
image: ruby:2.6
before_script:
- bundle install
pages:
stage: deploy
script:
- bundle exec rspec
- mv coverage public
coverage: '/\(\d+.\d+\%\) covered/'
artifacts:
paths:
- public
only:
- master
Gitlab Pagesではpublicディレクトリの内容をホスティングしますが、
Railsの場合はpublicフォルダを使用しているかと思うので、coverage
をpublic
に移動する前に、
以下のようにpublicディレクトリを避けるとよいと思います。
script:
- bundle exec rspec
- mv public .public # publicディレクトリを避ける
- mv coverage public
以下行はあっても無くてもよいと思いますが、書いておくと、
ジョブの出力結果のサイドバーにカバレッジが表示されるようになるみたいです。
coverage: '/\(\d+.\d+\%\) covered/' # Job出力結果から正規表現でカバレッジを取得する
頑張ってテスト書く
commit & push
バッジ表示の設定
テストカバレッジ解析の設定
Settings
> CI / CD
> General pipelines
> Test coverage parsing
を開くと、Simplecov (Ruby)
のexampleが書いてあるので、言われるがままに貼り付けて保存してみます。
※Jobの出力結果からカバレッジを拾うための正規表現です。
プロジェクトにラベルを追加する
Settings
> General
> Badges
を開き、プロジェクトのバッジを登録します。
Link
: バッジのリンク先(デプロイしたカバレッジレポートのURL)
https://グループ名.gitlab.com/プロジェクト名
のようになります。
Settings
> Pages
で確認できます。
Badge image URL
: バッジ画像のURL
https://gitlab.com/グループ名/プロジェクト名/badges/ブランチ名/coverage.svg
のようになります。
ゴール
これでプロジェクトのトップページにバッジが表示されるようになります!
バッジをクリックすると、カバレッジレポートが表示されます。
便利
一度設定すればmaster
にマージするたびにテストが自動実行されてカバレッジレポートが残るため、とても便利に使っています!
目に見える場所に数値があると、テストを書くのが楽しくなります
最後までお読みいただき、ありがとうございました。
サンプルプロジェクト
サンプルプロジェクトを以下に置いておきますので、ご参考までに。。
https://gitlab.com/kazenomachi/coverage_sample