この記事は ヤプリ Advent Calendar 2022 7日目の記事となります。
Androidエンジニアのてつ(哲)です。
概要
コード品質向上対策として、テストカバレッジの可視化がよく挙げられます。今回はCoverallsのPull Requestコメント機能がうまく導入できなかった時の解決方法について紹介したいと思います。
前提
トラブルシューティング
CoverallsのPull Requestコメント機能が導入できた場合、Pull Requestを作成した後にこのように表示されます。
何も表示されなかった場合は下記の項目をチェックしましょう!
機能設定自体が有効になっているか?
Coverallsの設定画面、https://coveralls.io/{ci_name}/{orgs_or_username}/{repo_name}/settings#lnk_alertsにLEAVE COMMENTS?
のENABLED
が選択されているかを確認しましょう(やや分かりにくいですが、X
が付いていれば有効です)
Coveralls BotにGithubリポジトリのアクセス権限を付与したか?
利用シーンによって設定方法が異なります:
- パブリックリポジトリの場合は設定不要
- プライベートリポジトリの場合
リポジトリの設定画面にCoveralls Botが書き込み権限で追加されていることを確認しましょう。
https://github.com/{orgs_or_username}/{repo_name}/settings/access
もし入ってなかったらAdd people
でWrite
権限を与えてください。
- 組織リポジトリで書き込み権限をCoveralls Botに与えたくない場合
組織の管理者権限が必要ですが、外部コントリビューターとして追加すれば可能なので、詳細はこちらで確認しましょう。
Coverallsに送ったビルドタイプはPull Requestであるか?
Coveralls上では直近のビルド(RECENT BUILDS
)が確認できます。送ったビルドタイプがPULL #XXXX
ではない場合はBotが認識しませんので、Coveralls APIのレスポンス内容を確認しましょう。sha_commit
やbranch
を間違えることが多いです。また、ローカルでのプッシュも想定使用ケースではないのでご注意ください。
比較するビルドが作成されているか
Coveralls上にターゲットブランチとベースブランチのビルドが存在しているかを確認しましょう。
Pull Requestコメントの中身はターゲットブランチとベースブランチのテスト結果を比較してから作ったものなので、そもそも存在しない場合は作れません。例えば、PRをfeature/lorem
(ターゲットブランチ) -> epic/ipsum
(ベースブランチ)にした場合、 Coveralls上のbranch
はepic/lorem
とepic/ipsum
でのビルドが必要です
全部確認したけど、うまくいかない
ここまできたらもう自力で解決することは難しいので、問い合わせしましょう!
方法としてはメール support@coveralls.io
とGithub Issueの2種類がありますが、個人的にはGithub Issueの方が返信が早かったのでおすすめです。担当者はかなり丁寧に説明してくれます。もし英語で質問するのが不安なら、過去の関連Issue(ラベルno-pr-comments
) を真似するのが良いと思います。
おまけ
- Android Kotlinの場合は
coveralls-jacoco-gradle-plugin
*3を利用することが多いです。マルチモジュールもサポートされましたので、ぜひ検討してください。 - Coveralls API ドキュメントはこちら(英)
coveralls-jacoco-gradle-plugin
を利用する場合はオプション設定が必要です。
coverallsJacoco { coverallsRequest = File("build/req.json") }