この広告は、90日以上更新していないブログに表示しています。
rochefort/git-trend のCIは、これまでTravis-CI を利用していたのですが、無料で使えなくなっていました(どうも2020年ぐらいからだったみたい)ので、今だとGithub Actionsが簡単に利用できそうでしたので、こちらへ移行しました。
また、カバレッジの表示もCoveralls を利用していたのですが、公開されているGithub Actions でうまく利用できなかったので、これを機にCodecov へ移行してみました。
あんまり関係ないところで少しはまっていましたが、移行自体は簡単でした。
codecov側はこんな感じです。
githubに載せるバッジはこんな感じです。
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
Codecov にgithubでログインし、対象リポジトリを選択すると、CODECOV_TOKEN が発行されます。
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に追加します。「Settings -> Secrets and Variables -> Actions -> Repository secrets」で追加できます。
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 }}
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"
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。