У меня есть проект на GitHub, где я использую Travis CI для CI & CD. Это Scala приложение, созданное с использованием sbt и работающее как веб-приложение с использованием инфраструктуры Play. Я написал конвейер сборки таким образом, чтобы в качестве этапов сборки я делал следующее:
jobs:
include:
- stage: test
script: sbt clean coverage test coverageReport
- stage: assemble-jar
script: sbt "set test in assembly := {}" assembly
if: branch = master
- stage: push-docker
script: bash docker_push.sh
if: branch = master
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что на этапе тестирования он форматируется и компилируется один раз, как и во время сборка и еще раз на этапе пу sh - docker. Это довольно раздражает, учитывая тот факт, что медленный компилятор Scala. Есть ли способ оптимизировать это так, чтобы он не компилировался для каждого этапа? Я узнал о кешах, и в моем yml есть следующее:
cache:
directories:
- "$HOME/.ivy2/cache"
- "$HOME/.sbt"
Но это, к сожалению, не помогает, поскольку кеширует только зависимости, а не результат предыдущего этапа сборки. Что я могу сделать, чтобы сделать это лучше?