【问题标题】:Making the SBT cached artifacts local to the workspace in Jenkins在 Jenkins 中使 SBT 缓存的工件本地化到工作区
【发布时间】:2018-11-23 19:40:09
【问题描述】:

有没有办法(比如使用 Jenkins maven 插件)来设置 .ivy2/cache 目录
在 Jenkins 的 sbt 工作的工作区本地?动机是每次都能够执行“干净”的构建。
如果没有,是否有其他方法可以验证所有 sbt 依赖项是否在构建期间从外部存储库解析,而不是从本地缓存解析?

【问题讨论】:

    标签: jenkins sbt ivy


    【解决方案1】:

    要更改默认的 ivy 主页,请查看此SO post
    另一种可能的解决方案是在 Build using sbt 之前添加 Execute Shell 步骤:

    rm -rf ~/.ivy2/cache
    

    【讨论】:

    • 所以我猜目前 sbt 插件本身没有内置任何东西。覆盖默认的 .ivy2/cache 位置作为系统属性似乎是个好主意。 'rm -rf ~/.ivy2/cache' 会破坏并行作业,所以它不是解决方案。
    • 我同意,覆盖更干净。在覆盖默认缓存位置时,可能会重用 Jenkins 环境变量 'WORKSPACE'、'BUILD_NUMBER' 的组合。不要忘记清理缓存目录,以免它们堆积起来。
    • 根据我检查的内容(使用 sbt 1.0.4),-Divy.home 属性对 sbt 没有影响,只有 -Dsbt.ivy.home 定义了所有下载工件的 .ivy 位置包括 sbt 和 scala lang 本身。很遗憾,每次 CI 作业触发并清理工作空间时,我都必须下载所有这些繁重的依赖项。
    猜你喜欢
    • 2016-05-24
    • 2017-03-04
    • 1970-01-01
    • 2017-01-16
    • 2015-06-19
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多