我想使用CloudBees Jenkins服务来构建基于SBT的夜间快照 scala项目并将它们发布到Sonatype OSS Maven Repository。 SBT有 two ways为构建提供发布凭据;一个人有 凭证内联在.sbt文件中(未加密,natch),以及其他用途 外部属性文件的硬编码路径(遗憾的是,未加密)。
CloudBees有mechanism用于提供构建代理的配置文件,
但是我不想在我的build.sbt
中硬编码到这个位置的路径,也不能
找到告诉SBT从命令行读取.sbt
文件的任何方法。最接近的我
可能会来设置sbt.global.base
system property,但不幸的是这个
失败,因为配置文件位置以只读方式挂载,SBT使用它
已编译的类文件的位置。
Damien Lecan came up with a clever way围绕这个问题运行预构建
将一组.sbt
文件复制到构建执行程序的$HOME/.sbt
目录的脚本。
我发现这个解决方案可以接受,但令人反感,因为它使构建依赖于
短暂的状态,并增加了另一个潜在的失败点。
如何发布具有只读私有凭证的构建时访问权限的SBT项目?
答案 0 :(得分:2)
SBT似乎没有任何方法可以将任意.sbt文件添加到构建中。然而
set
command允许用户在构建时修改设置,此命令可以是
在命令行中使用,就像任何其他命令一样。
这可以与Credentials
对象可以接受File
引用这一事实相结合,
提供外部文件以从私有安装中加载安全凭证。
在CloudBees私有WebDAV存储库中,将凭据属性文件添加到您的首选项
位置(例如/private/sbt/.credentials
)。在Jenkins作业配置中,
将“使用sbt构建”部分中的“操作”字段设置为如下所示:
'set credentials += Credentials(file("/private/myproject/sbt/.credentials"))' publish
在我的构建中,我实际上是clean update "+ test" "+ publish"
,以确保环境清洁
并确保所有交叉编译的构建在其中任何一个之前通过他们的测试
转移到存储库。