我们有一个play2/scala用gitlab ci构建的应用程序.
我们.gitlab-ci.yml(至少重要的部分)看起来如下:
image: hseeberger/scala-sbt
variables:
SBT_GLOBAL_BASE_DIR: "$CI_PROJECT_DIR/cache/.sbt"
IVY2_CACHE_DIR: "$CI_PROJECT_DIR/cache/.ivy2"
SBT_BOOT_DIR: "$CI_PROJECT_DIR/cache/.sbt/boot"
M2_HOME_DIR: "$CI_PROJECT_DIR/cache/.m2"
before_script:
# Log the sbt version
- sbt sbt-version
build:
stage: build
script:
- ./build.sh
Run Code Online (Sandbox Code Playgroud)
用build.sh:
sbt -Dsbt.global.base=$SBT_GLOBAL_BASE_DIR \
-Dsbt.ivy.home=$IVY2_CACHE_DIR \
-Dsbt.boot.directory=$SBT_BOOT_DIR \
compile
Run Code Online (Sandbox Code Playgroud)
不幸的是,我们的管道总是运行大约30-40分钟,包括所有步骤(构建,验证,部署).大部分时间sbt通过一次又一次地下载真正烦人的事情来花费.
我可能不太了解,gitlab ci runners但根据我的理解,通过使用hseeberger/scala-sbt作为图像,sbt应该是全局可用的,不应该下载它.
然后gitlab的这个解决方案也没有必要.
无论如何,sbt每当服务器运行任何sbt命令时,如果在每次部署期间不会完全下载6次,我会很高兴.
有人可以解释我如何使用正确image或image正确的方式,或者我如何缓存这些sbt东西?
在过去的几天里,我docker和他一起战斗了很多gitlab ci.我发现这个问题与 …