昨日あたりから RuboCop の master で CI が落ちていて、見てみたら Code Climate の cc-test-reporter でエラーが起きていることが原因だった。
$ #!/bin/bash -eo pipefail ./tmp/cc-test-reporter before-build COVERAGE=true bundle exec rake spec ./tmp/cc-test-reporter format-coverage --output tmp/codeclimate.$CIRCLE_JOB.json Starting test-queue master (/tmp/test_queue_157_5140.sock) ==> Summary (2 workers in 36.1115s) [ 1] 8753 examples, 0 failures, 9 pending 254 suites in 36.1034s (pid 160 exit 0 ) [ 2] 6772 examples, 0 failures, 2 pending 239 suites in 36.1054s (pid 161 exit 0 ) Coverage report generated for RSpec, rspec-1, rspec-2, rspec-fork-163, rspec-fork-164, rspec-fork-165 to /home/circleci/project/coverage. 21266 / 21459 LOC (99.1%) covered. Error: json: cannot unmarshal object into Go struct field input.coverage of type []formatters.NullInt Usage: cc-test-reporter format-coverage [coverage file] [flags] Flags: --add-prefix string add this prefix to file paths -t, --input-type string type of input source to use [clover, cobertura, coverage.py, excoveralls, gcov, gocov, jacoco, lcov, simplecov, xccov] -o, --output string output path (default "coverage/codeclimate.json") -p, --prefix string the root directory where the coverage analysis was performed (default "/home/circleci/project") Global Flags: -d, --debug run in debug mode Exited with code exit status 255
https://circleci.com/gh/rubocop-hq/rubocop/83619
調べたところ SimpleCov 0.18 のリリースがリリースされており、cc-test-reporter がうまく組み合っていないというイシューが開かれていた。
PR がパスしているかどうかが分からないのは不便なので、対応までのワークアラウンドとして Gemfile に SimpleCov 0.18 未満を指定して乗り切ることにした。
-gem 'simplecov', '~> 0.10' +# Workaround for cc-test-reporter with SimpleCov 0.18. +# Stop upgrading SimpleCov until the following issue will be resolved. +# https://github.com/codeclimate/test-reporter/issues/418 +gem 'simplecov', '~> 0.10', '< 0.18'