読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

CircleCIでJava8 + Gradleプロジェクトのテストを行う

tech java

興味本位で自分のアルゴリズム実装repository( https://github.com/shibayu36/algorithms )のテストをCircleCIで動かしてみようと考えた。基本的にCircleCIはcircle.ymlに設定を追加したら終わりなのだけど、何を設定すればいいか少し調べる必要があったのでメモ。

設定

Configuring CircleCI - CircleCI などを見ながら、最終的なcircle.ymlは以下のようになった。Circle CIでJavaを使ってビルドするCircleCIでJUnitの結果を見る - Qiita あたりも参考になった。

machine:
  java:
    version: oraclejdk8
  timezone: Asia/Tokyo
  environment:
    GRADLE_OPTS: -Xmx4G
  post:
    - sudo service mysql stop
    - sudo service postgresql stop

checkout:
  post:
    - chmod +x ./gradlew

dependencies:
  override:
    - ./gradlew testClasses --stacktrace

test:
  override:
    - ./gradlew --full-stacktrace check
  post:
    - mkdir -p $CIRCLE_TEST_REPORTS/junit/
    - find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;

まずmachineセクションでサーバのセットアップをする。

checkoutフェーズではgradlewの実行権限を追加するだけ。

dependenciesフェーズではテストの依存をインストールする。Gradleを使っていれば、./gradlew testClasses --stacktraceだけでOK。

testフェーズでは実際にテストを動かす。

確認

これでテストが実行できるようになった。https://circleci.com/gh/shibayu36/algorithms で確認できた。