LoginSignup
6
2

More than 3 years have passed since last update.

RSpec + SimpleCov で計測したカバレッジレポートをGitlab Pagesにホスティングする

Last updated at Posted at 2019-05-17

RSpec + SimpleCov で計測したカバレッジレポートをGitlab Pagesにホスティングする

やること

  • simplecovで、rspec で実行したテストのカバレッジレポートを出力する
  • 出力したカバレッジレポートをGitlab Pagesにホスティングする
  • 以下のようにプロジェクトにバッジを表示し、一目でカバレッジが分かるようにする スクリーンショット 2019-05-17 22.38.04.png

手順

rspecとsimplecovを導入する

すでに導入済みの場合は、適宜飛ばしてください。

gemをインストール

Gemfile
gem 'rspec'
gem 'simplecov'
$ bundle install

spec_helper.rbsimplecovを読み込む設定を追記

spec_helper.rb
require 'simplecov'
SimpleCov.start

.gitlab-ci.ymlpagesジョブを追加

pagesジョブを追加します。
基本的には以下のような流れになります。

.gitlab-ci.yml
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フォルダを使用しているかと思うので、coveragepublicに移動する前に、
以下のようにpublicディレクトリを避けるとよいと思います。

.gitlab-ci.yml
  script:
    - bundle exec rspec
    - mv public .public # publicディレクトリを避ける
    - mv coverage public

以下行はあっても無くてもよいと思いますが、書いておくと、
ジョブの出力結果のサイドバーにカバレッジが表示されるようになるみたいです。

.gitlab-ci.yml
  coverage: '/\(\d+.\d+\%\) covered/' # Job出力結果から正規表現でカバレッジを取得する

スクリーンショット 2019-05-17 22.59.27.png

頑張ってテスト書く :innocent:

commit & push :tada:

バッジ表示の設定

テストカバレッジ解析の設定

Settings > CI / CD > General pipelines > Test coverage parsing
を開くと、Simplecov (Ruby)のexampleが書いてあるので、言われるがままに貼り付けて保存してみます。
※Jobの出力結果からカバレッジを拾うための正規表現です。

スクリーンショット 2019-05-17 23.18.43.png

プロジェクトにラベルを追加する

Settings > General > Badges
を開き、プロジェクトのバッジを登録します。

Link: バッジのリンク先(デプロイしたカバレッジレポートのURL)
https://グループ名.gitlab.com/プロジェクト名 のようになります。
Settings > Pages で確認できます。

Badge image URL: バッジ画像のURL
https://gitlab.com/グループ名/プロジェクト名/badges/ブランチ名/coverage.svg のようになります。

スクリーンショット 2019-05-17 23.23.40.png

ゴール :tada:

これでプロジェクトのトップページにバッジが表示されるようになります!
バッジをクリックすると、カバレッジレポートが表示されます。
便利 :relaxed:

スクリーンショット 2019-05-17 22.38.04.png

一度設定すればmasterにマージするたびにテストが自動実行されてカバレッジレポートが残るため、とても便利に使っています!
目に見える場所に数値があると、テストを書くのが楽しくなります:blush:

最後までお読みいただき、ありがとうございました。

サンプルプロジェクト

サンプルプロジェクトを以下に置いておきますので、ご参考までに。。
https://gitlab.com/kazenomachi/coverage_sample

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2