CircleCI : parallelism을 사용할 때 SimpleCov 결과를 요약하고 Artifacts에 넣습니다.
참고로 한 페이지:
여러 작업의 테스트 결과를 단일 디렉토리로 복사
SimpleCov의 결과는 coverage 디렉토리 아래의 JSON 파일 .resultset.json에 출력됩니다. 아래의 "Copy coverage results"와 같이 Rspec 실행 후 JSON 파일을/tmp/coverage/.resultset-number.json에 복사합니다.
또한 persist_to_workspace를 사용하면/tmp/coverage 아래의 파일을 작업간에 공유할 수 있습니다. RSpec의 실행이 끝날 때마다, .resultset-번호.json 가 이 디렉토리에 모여 갑니다.
또한/tmp/coverage 라는 디렉토리 이름은 매우 중요합니다.
.circleci/config.yml
test:
parallelism: 4
# 略
steps:
# 略
- run:
name: rspec
command: |
bundle exec rspec --format RspecJunitFormatter \
--out test_results/rspec.xml \
--format documentation \
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split)
- store_test_results:
path: test_results
- run:
name: Copy coverage results
command: |
mkdir /tmp/coverage
cp coverage/.resultset.json "/tmp/coverage/.resultset-${CIRCLE_NODE_INDEX}.json"
- persist_to_workspace:
root: /tmp/coverage
paths:
- .resultset-*.json
SimpleCov 결과를 결합하는 작업
최근 SimpleCov는 여러 JSON에서 하나의 HTML을 출력하는 기능을 가지고 있었으므로 이것을 그대로 사용하는 rake 파일을 작성합니다.
lib/tasks/coverage_report.rake
namespace :coverage do
desc "Collates all result sets generated by the different test runners"
task :report do
require 'simplecov'
SimpleCov.collate Dir["/tmp/coverage/.resultset-*.json"], 'rails'
end
end
병렬 테스트가 모두 끝나면 결과 요약
CircleCI의 workflows를 설정하고 test 작업이 모두 끝나면 report 작업을 실행하도록 합니다(아래 workflows - build_and_test - jobs - report 부분).
report 작업은 rake 작업의 coverage:report를 이동합니다. 이 때, attach_workspace 로 복수의 JSON 파일이 놓인/tmp/coverage 를 사용할 수 있도록 해 둡니다. 이제 coverage 아래에 SimpleCov HTML이 완성됩니다.
또한 store_artifacts를 사용하면 coverage 디렉토리가 CircleCI의 Artifacts에 일정 기간 저장되어 브라우저에서 볼 수 있습니다.
.circleci/config.yml
jobs:
build:
# 略
test:
# 略
report:
docker:
- image: cimg/ruby:2.6.6-node
steps:
- checkout
- ruby/install-deps:
bundler-version: 2.1.4
- attach_workspace:
at: /tmp/coverage
- run:
name: Collates all result sets
command: bundle exec rails coverage:report
- store_artifacts:
path: coverage
workflows:
version: 2
build_and_test:
jobs:
- build
- test:
requires:
- build
- report:
requires:
- test
미래의 도전
Rails 6의 병렬 테스트는 Rspec에서 사용할 수 있는지, CircleCI에서 어떻게해야하는지 조사한다.
내 CircleCI 기사 :
Reference
이 문제에 관하여(CircleCI : parallelism을 사용할 때 SimpleCov 결과를 요약하고 Artifacts에 넣습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazutosato/items/1ff33fc86151ca78518f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)