GoのテストカバレッジをGitHubで可視化する方法
This content is a draft and will not be included in production builds.
2026年5月、GitHubの公式機能で、Code Qualityの一部としてテストカバレッジの可視化が行えるようになった。
これまではCoverallsを使っていたときはプライベートリポジトリの利用金額が高い割にうまく使えていなかったり、goverallsでbad response status from coveralls: 422エラーのようにエラーが多くて諦めたりしていた。その代替として octocov を試したときの結果はoctocovで複数のマトリクスに対応すると密結合が避けられないに残っているけれど、痒いところに届かない状態が続いていた。
ここにきてGitHubが公式の機能として提供してきたので、使えるにしろそうでないにしろ、ある種のデファクトにはなるだろうから試してみようと思ってやってみた。まだパブリックプレビューなので変更は入るかもしれない。
必要なコマンド類のインストール
Section titled “必要なコマンド類のインストール”Code QualityのカバレッジではCobertura XMLフォーマットを要求するので、GoのテストカバレッジをCobertura XMLに変換しなければならない。これは元々 t-yuki/gocover-cobertura があったけれどメンテされていないのでフォークがいくつか出現している。ざっと見た限りでは boumenot/gocover-cobertura が安定して良いだろう。
go get -tool github.com/boumenot/gocover-coberturaカバレッジの取得
Section titled “カバレッジの取得”カバレッジを取得したら、それを変換するだけなので簡単にできる。
go test -coverprofile=cover.out -covermode=countgo tool gocover-cobertura <cover.out >cover.xmlActionsでアップロード
Section titled “Actionsでアップロード”Cobertura XMLを取得したら、それをGitHub Actionでアップロードすれば良い。アップロードのためには以下のパーミッションを求められる。
permissions: contents: read code-quality: writeアクションはこの通り。
- uses: actions/upload-code-coverage@v1 with: file: cover.xml language: Go label: code-coverage/kaeruアップロード時に404エラー
Section titled “アップロード時に404エラー”おそらくパブリックプレビューなので許可されていない。待ってみる。