CircleCIとCOVERALLSを連携する

やりたいこと

CircleCIでテスト実行後、code coverageをCOVERALLSに表示したい。

COVERALLSの設定

レポジトリを登録して、SettingsのREPO TOKENをコピーする。

CircleCIの設定

先ほど確認したREPO TOKENをProject SettingのEnvironment VariablesにCOVERALLS_REPO_TOKENとして登録する。

config.ymlの設定

MavenのGoalにjacoco:report coveralls:reportを指定する。

      # Generate a site.
      - run:
          name: Site
          command: mvn jacoco:report coveralls:report
      - store_artifacts:
          path: target/site
          destination: reports

pom.xmlの設定

repoTokenにCOVERALLS_REPO_TOKENを設定する。

            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.3.0</version>
                <configuration>
                    <repoToken>${COVERALLS_REPO_TOKEN}</repoToken>
                </configuration>
            </plugin>

動作確認

対象のGitHubレポジトリにpushすると、ビルドが動いた後、下記の通りcode coverageが表示されることが確認できた。

Coverallsをopenjdk11環境で使用する

ビルド環境をopenjdk11に変更したら、coveralls-maven-pluginが落ちてしまって、Coverallsのカバレッジが更新されなくなっていた。

coveralls-maven-pluginに以下の依存関係を追加することで回避することが出来る。

<dependencies>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
</dependencies>

本家がJava11に対応してくれるのが一番良いのだが、忙しいみたいでいつ対応されるかわからない。