ScalaのCIパフォーマンスチューニング on CircleCI2.0 - Qiita
を参考に、コンパイル結果のキャッシュをするように設定。
しかし、キャッシュしても test:compile
についてはあいかわらずキャッシュが効かないような動き。
Incremental compilation inside docker container broken since SBT 1.1.0 · Issue #4168 · sbt/sbt
Docker 内ではファイルシステムにコンパイル結果を書き出すときにタイムスタンプが秒で切り捨てられるっぽい。
なので、
scala - How to re-use compiled sources in different machines - Stack Overflow
ここに書いてある、
-Dsbt.io.jdktimestamps=true
を追加してみた。
これをやると test 前の固まったような待ち時間がなくなり、すぐにテストが走るようになった!
しかしながら、 JDK8 だとこのハックが使えるみたいだが、8 より上だとダメらしい。
Incremental compilation inside docker container broken since SBT 1.1.0 · Issue #4168 · sbt/sbt
にその場合のハックがあるが未検証。
somehowDetectDocker
の箇所を CircleCI 独自の環境変数を見るようにすればできそうではある。