Movatterモバイル変換


[0]ホーム

URL:


rochefort's blog

この広告は、90日以上更新していないブログに表示しています。

Github Actions + simplecov + codecov でカバレッジを表示する

rochefort/git-trend のCIは、これまでTravis-CI を利用していたのですが、無料で使えなくなっていました(どうも2020年ぐらいからだったみたい)ので、今だとGithub Actionsが簡単に利用できそうでしたので、こちらへ移行しました。

また、カバレッジの表示もCoveralls を利用していたのですが、公開されているGithub Actions でうまく利用できなかったので、これを機にCodecov へ移行してみました。

あんまり関係ないところで少しはまっていましたが、移行自体は簡単でした。

こんな感じ

codecov側はこんな感じです。

githubに載せるバッジはこんな感じです。

Github Actionsでrspecの実行

ruby/setup-ruby@v1 を使ってrspec, rubocop を実行しています。ここでは省略していますが、複数のrubyで実行したかったので、jobsをrubyのversion毎に作成しています。

# .github/workflows/ci.ymlname: CIon:  push:  pull_request:jobs:  ruby32:    runs-on: ubuntu-latest    timeout-minutes: 10    steps:      - name: Checkout code        uses: actions/checkout@v2      - name: Setup Ruby        uses: ruby/setup-ruby@v1        with:          ruby-version: '3.2.2'          bundler-cache: true      - name: Show ruby version        run: ruby -v      - name: Run tests        run: bundle exec rspec      - name: Run lint        run: bundle exec rubocop

smplecov + codecov

codecov側の設定

Codecovgithubでログインし、対象リポジトリを選択すると、CODECOV_TOKEN が発行されます。

simplecov

SimpleCov::Formatter::SimpleFormatter で送れば良いので、これ用の設定は特に不要でした。

# spec/spec_helper.rbrequire"simplecov"SimpleCov.startdo  add_filter"/spec/"end

最初は、githubに記載されてるように、ENV["CI"] でformatter分ける必要があるかと思ったのですが、なくてもlocalでhtmlとSimpleFormatterのそれぞれ出力されてるようなので、上記に変更しました。

# spec/spec_helper.rbrequire"simplecov"SimpleCov.startdo  add_filter"/spec/"ifENV["CI"]    formatterSimpleCov::Formatter::SimpleFormatterelse    formatterSimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::SimpleFormatter,SimpleCov::Formatter::HTMLFormatter,    ])endend

Github Actionsの設定

これをgithubに追加します。「Settings -> Secrets and Variables -> Actions -> Repository secrets」で追加できます。

Github Actionsワークフロー

filesとtokenオプションが必要です。その他オプションは、Codecov · Actions · GitHub Marketplace に記載されています。

# .github/workflows/ci.yml(略)      - name: Upload coverage reports to Codecov        uses: codecov/codecov-action@v3        with:          files: ./coverage/.resultset.json          token: ${{ secrets.CODECOV_TOKEN }}

GithubのREADMEにつけるバッジ

codecovの設定から選択できます。

その他ハマったところ

今回合わせて、gemの更新も行ったのですが、Simplecov.start の実行よりもアプリケーションのrequireが早く実行されており、gemの更新により、rspecの結果がcoverageに表示されなくなってしまっていました。

これに気づかずに、codecovには送信できているが結果が何も表示されておらず、formatterが問題ではないかと疑って、いろいろ試してしまっていました。

# beforerequire"simplecov"require"webmock/rspec"require"git_trend"# <- これがアプリケーションコード。これより先に SimpleCov.start しないといけないSimpleCov.startdo  add_filter"/spec/"end
# afterrequire"simplecov"SimpleCov.startdo  add_filter"/spec/"endrequire"webmock/rspec"require"git_trend"
About
id:rochefortid:rochefort

Ruby・Rails・Mac・Web・Tech、時々日々のことについて書いています。

follow
Search
Top Entries
はてなブックマーク数
Categories
Comments

    引用をストックしました

    引用するにはまずログインしてください

    引用をストックできませんでした。再度お試しください

    限定公開記事のため引用できません。

    読者です読者をやめる読者になる読者になる

    [8]ページ先頭

    ©2009-2025 Movatter.jp