CircleCI에서만 rubocop이 오류가 발생합니다.

1404 단어 CircleCIRailsRuboCop

현상



수중의 개발 환경에서는 rubocop에 화를 내지 않는다.
% bundle exec rubocop
Inspecting 31 files
...............................

31 files inspected, no offenses detected

하지만 그러나 CircleCI 컨테이너에서 움직이면 오류가 발생합니다!


#!/bin/bash -eo pipefail
bundle exec rubocop
Error: The `Style/TrailingCommaInLiteral` cop no longer exists. Please use `Style/TrailingCommaInArrayLiteral` and/or `Style/TrailingCommaInHashLiteral` instead.
(obsolete configuration found in vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.2/.rubocop_defaults.yml, please update it)
Exited with code 2

원인



이유는 간단했다. bundle install한 gems는 수중에서는 시스템(또는 rbenv)의 부하에 로드되는 것에 대해, CircleCI에서는 vendor/bundle하하에 로드하도록(듯이) 지정하고 있었다.
- run:
    name: install dependencies
    command: |
      yarn install
      bundle install --jobs=4 --retry=3 --path vendor/bundle

이 때문에 rubocop가 vendor 부하의 gems들까지 체크해 버렸던 것이었다.

대책



vendor 부하를 rubocop의 대상외로 하는 것으로 해결했다.
AllCops:
  TargetRubyVersion: 2.5
  Exclude:
    - 'bin/**/*'
    - 'node_modules/**/*'
    - 'vendor/**/*'

참고

좋은 웹페이지 즐겨찾기