【发布时间】:2021-01-16 15:52:23
【问题描述】:
有谁知道是否有可能有一个使用 SBT(最新 1.4.3 版本)的多阶段 Travis 构建,并且每个阶段都可以重用前一个阶段的编译代码?
我尝试过缓存,但它似乎不起作用(我希望我只是遗漏了一些东西)。 我所拥有的是第一个“编译”阶段,然后是第二个“测试”阶段,其中两个作业并行运行(单元测试和集成测试)。
我想要的是 Compile 编译所有内容(包括测试代码),然后下一个阶段都只从编译离开的地方开始。
我设法组织构建来做到这一点,但是:
- 在每个步骤中重新完成编译或
- 通过缓存整个
./来保存编译...但随后它会忽略我推送的每一个新更改(显然)。
我使用的缓存配置来自 sbt 文档:
cache:
directories:
- $HOME/.cache/coursier
- $HOME/.ivy2/cache
- $HOME/.sbt
有什么想法吗?
(或者,如果您知道这是 Travis 的问题,并且可以在 Github Actions 中使其正常工作,那也可以)
【问题讨论】:
-
缓存并不意味着存储阶段之间的构建工件。您将需要使用共享存储,例如 S3。见docs.travis-ci.com/user/build-stages/share-files-s3
-
另外,如果你想要覆盖,你必须重新编译你的代码,以便让覆盖工具添加检测,否则它将无法工作。
-
有趣。我能问一下为什么它不适用于在阶段之间存储
.class文件吗?对于更大的人工制品,我可以理解,但编译代码的基本原理是什么?
标签: scala caching sbt travis-ci github-actions