CircleCI
SimpleCov
CodeClimate
CircleCI2.0

CircleCiからCodeClimateにテストカバレッジを送信する

CodeClimate導入してみたけどテストカバレッジが表示されない!なぜ!
とおもったら、ちゃんとそのための手順が必要でした。 :sweat_smile:

流れ

導入したプロジェクトはRuby on Railsだったので、テストカバレッジにはSimpleCovを採用してます。

rspecでSimpleCovが動いてる前提です。

rails_helper.rb
require 'simplecov'
SimpleCov.start
...

詳細はSimpleCovのREADME参照。

  1. CircleCIでrspec実行
  2. simplecovがcoverageを出力
  3. coverageをtest-reporterがCodeClimateにアップロード

CC_TEST_REPORTER_ID
Settings -> Test Coverage -> TEST REPORTER ID
から取得できます。

コード

CircleCIのconfigをdiffで表示するとこんな感じ。

.circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/ruby:2.5.0-node-browsers
        environment:
+          CC_TEST_REPORTER_ID: 'XXXXXXXXXXXXXXX'
    working_directory: ~/my_project
    steps:
      - checkout

      ...

+      # Download test-reporter
+      - run:
+          name: Setup Code Climate test-reporter
+          command: |
+            curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
+            chmod +x ./cc-test-reporter

      # Run rspec
      - run: |
+          ./cc-test-reporter before-build
          bundle exec rspec
+          ./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?

      ...

以上です。

参考