はじめに
この記事は Github Actions で coveralls-gradle-plugin を使って coveralls.io に Report を送信する方法を備忘録として書いています。なお、2019-12-07 時点で Github Actions に対応してほしいという Issue が上がっているし、本家の Issue にもサポートの Issue が上がっているので、将来的にはこの記事に書いたような方法を使わなくて良くなると思います。
おことわり
Github Actions が何か、Coveralls が何かと言った話は省略します。ドキュメントのリンクを書いておくので興味のある人はリンク先を読んで概要を知ってから読んでもらえると嬉しいです。
また、より良い設定方法があればご意見いただけると嬉しいです。
解決したい課題
- もともと TravisCI と coveralls-gradle-plugin を組み合わせて coveralls.io を使って CI していたが Github Actions に移行したい
- coveralls-gradle-plugin は TravisCI を含めたいくつかの CI サービス をサポートしており CI サービスとの連携が容易だったが、Github Actions はその対象サービスではない
- coveralls.io が公式に提供する Github Actions があるが、この Issue に記載されている通り Java/Jacoco を利用した Report に対応していない
どう解決するか
- coveralls-gradle-plugin が提供するサポート外 CI サービスと連携する手法を使う。
Github Actions の設定
name: Test CI
on:
- pull_request
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Test with Gradle
run: ./gradlew test
- name: Coveralls Test Report
run: ./gradlew jacocoTestReport coveralls
env:
COVERALLS_REPO_TOKEN: ${{secrets.COVERALLS_REPO_TOKEN}}
CI_NAME: Github Actions
CI_BRANCH: ${{github.ref}}
CI_PULL_REQUEST: ${{github.event.pull_request.html_url}}
-
coveralls-gradle-plugin はサポート外 CI サービスと連携する場合、以下の環境変数が設定可能なので設定しただけ。
-
CI_NAME
: CI サービスの名前 -
CI_BUILD_NUMBER
: CI の BUILD 番号 -
CI_BUILD_URL
: CI の BUILD URL -
CI_BRANCH
: CI する Branch 名 -
CI_PULL_REQUEST
: CI する Pull Request の URL -
COVERALLS_REPO_TOKEN
(必須パラメータ): coveralls.io から取得できる Token
-
-
github.event.*
が持つパラメータは CI の hook によって変わるため、pull_request
event を hook していないとこの設定は動きません。 -
COVERALLS_REPO_TOKEN
は Github の Repository の Secret 設定に追加しておく必要があります。 - 環境変数に設定した値はContext から様々な変数を取得できるのでカスタマイズしてみてもいいかもしれません。
困りごと
-
Github Actions では
check_run
event に hook しないと BUILD URL が取れない(と思う)- 同様に BUILD 番号も取れない
- https://github.community/t5/GitHub-Actions/Add-build-number/td-p/30548
- そのため、
CI_BUILD_NUMBER
とCI_BUILD_URL
が設定できない
-
coveralls.io 上で Commiter が設定されない
-
COVERALLS_REPO_TOKEN
のみを設定した場合は表示されるため Pull Request の場合は表示されないものなのだろうか?
-
おわりに
たまたま昔作った OSS な Repository をメンテナンスしていて得た知見でした。 Github Actions は後発の CI サービスなのでドキュメントがしっかりしていて、調査もしやすくてサイコーですね。