🦁
Github ActionでCIのテストレポートを取得
プルリクエストをした後、Github Actionは自動的にテストを実行し、
一般的には合格か不合格の結果だけが表示されます。
テストレポートをどのように取得するのでしょうか?
以下にいくつかの方法を紹介します。
Codecov
Codecovに登録すると、自動的にアクセス可能なリポジトリが読み込まれます。

setup repo,をクリックし、手順に従って設定します。

Railsで以下の設定が必要です。
gemを追加
# Gemfile
group :test do
  ...
  gem 'simplecov'
  gem 'simplecov-cobertura'
end
テストレポートのフォーマットを設定
# test_helper.rb
require 'simplecov'
require 'simplecov-cobertura'
SimpleCov.start do
  coverage_dir 'tmp/coverage'
end
SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
actionを設定
- name: Upload coverage reports to Codecov
  uses: codecov/codecov-action@v3
  with:
    token: ${{ secrets.CODECOV_TOKEN }}
    files: ./tmp/coverage/coverage.xml
    fail_ci_if_error: true
結果


simplecov-report-action
最もシンプルなテストカバレッジレポート
actionを設定
actionを設定するだけでOKです
- name: Simplecov Report
  uses: aki77/simplecov-report-action@v1
  with:
    token: ${{ secrets.GITHUB_TOKEN }}
    failedThreshold: 10
    resultPath: tmp/coverage/.last_run.json
結果

cobertura-action
より詳細なテストカバレッジレポート
gemを追加
# Gemfile
group :test do
  ...
  gem 'simplecov'
  gem 'simplecov-cobertura'
end
テストレポートのフォーマットを設定
# test_helper.rb
require 'simplecov'
require 'simplecov-cobertura'
SimpleCov.start do
  coverage_dir 'tmp/coverage'
end
SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
actionを設定
- uses: 5monkeys/cobertura-action@master
  with:
    path: tmp/coverage/coverage.xml
    repo_token: ${{ secrets.GITHUB_TOKEN }}
    minimum_coverage: 30
    show_missing: true
    show_class_names: true
    link_missing_lines: true
    report_name: code coverage results
結果

完成例
name: Rails Ci
on:
  pull_request:
    branches:
      - develop
    types:
      - opened
      - synchronize
      - ready_for_review
concurrency: 
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true
env:
  GH_TOKEN: "${{secrets.GH_TOKEN}}"
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        token: ${{ secrets.GH_TOKEN }}
    - name: Set up Ruby
    # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
    # change this to (see https://github.com/ruby/setup-ruby#versioning):
      uses: ruby/setup-ruby@v1
      with:
        bundler-cache: true # runs 'bundle install' and caches installed gems automatically
    - name: Run tests
      run: bundle exec rake test
    - name: Upload coverage reports to Codecov
      uses: codecov/codecov-action@v3
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        files: ./tmp/coverage/coverage.xml
        fail_ci_if_error: true
    - name: Simplecov Report
      uses: aki77/simplecov-report-action@v1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        failedThreshold: 10
        resultPath: tmp/coverage/.last_run.json
    - uses: 5monkeys/cobertura-action@master
      with:
        path: tmp/coverage/coverage.xml
        repo_token: ${{ secrets.GITHUB_TOKEN }}
        minimum_coverage: 80
        show_missing: true
        show_class_names: true
        link_missing_lines: true
        report_name: code coverage results
Discussion