【发布时间】:2020-05-09 18:31:38
【问题描述】:
我正在尝试使用 sbt 制作我的第一个 gitlab ci 管道。 我正在尝试构建和测试阶段。
问题是,虽然我在构建时编译了项目,但它在运行测试之前在测试阶段再次编译。
有人可以帮助我了解为什么会发生这种情况以及如何解决它吗?
sbt 版本:1.2.7
这是我的 gitlab-ci.yml 文件:
image: docker-registry:5000/sbt-docker:latest
variables:
SBT_OPTS: "-Dsbt.global.base=sbt-cache/sbtboot -Dsbt.boot.directory=sbt-cache/boot -Dsbt.ivy.home=sbt-cache/ivy Dsbt.coursier.home=sbt-cache/coursier -Dsbt.io.jdktimestamps=true"
COURSIER_CACHE: sbt-cache/coursier
stages:
- build
- test
cache:
paths:
- "sbt-cache/ivy/cache"
- "sbt-cache/boot"
- "sbt-cache/sbtboot"
- "sbt-cache/coursier"
build:
stage: build
script:
- sbt -J-Xmx2G clean core/compile core/package
artifacts:
untracked: true
paths:
- "target/"
test:
stage: test
dependencies:
- build
script:
- sbt core/test
allow_failure: true
【问题讨论】:
-
你尝试过执行什么吗?当它按照您所说的再次编译时,它会退出吗?也许您可以进一步了解您要解决的具体问题。
-
您的
untracked和paths键似乎缩进不正确。这只是一个复制粘贴的问题吗? -
@Nelles 我尝试执行,一切正常,但问题是它需要很长时间,因为它在测试阶段再次编译
-
@cbley 是的,这是复制粘贴问题
-
当您在第二阶段运行
sbt core/test时,它可能看不到第一阶段的target/目录,因此它会重新从头开始编译源代码。您需要找到一种方法将此目录传递到下一阶段,使用工件和依赖项。
标签: scala sbt gitlab gitlab-ci