添加凭据以允许Travis-CI使用专用的Nexus存储库

时间:2013-11-16 01:29:13

标签: sbt nexus travis-ci

我正在使用Travis进行持续集成。但是,我的项目依赖于私有的Nexus存储库。我宁愿不将sbt凭证签入我们的存储库。 Travis确实支持encryption keys但它们只影响环境变量。

如何让Travis对Nexus进行身份验证? sbt似乎不支持来自环境变量的凭据。

https://github.com/sbt/sbt/blob/0.13/launch/src/main/scala/xsbt/boot/Update.scala#L56

看起来支持从环境变量指定凭证文件,或将凭证指定为系统属性。不幸的是,这似乎不适用于0.13

sbt -Dsbt.boot.realm="Sonatype Nexus Repository Manager" -Dsbt.boot.host="www.there.com" -Dsbt.boot.user="deployment" -Dsbt.boot.password="password" aether-deploy

2 个答案:

答案 0 :(得分:4)

您希望使用Travis安全环境变量,如文档所述。假设您的环境变量为NEXUS_USERNEXUS_PASS,则命令行必须为:

sbt 'set credentials += Credentials("Sonatype Nexus Repository Manager", "www.there.com", System.getenv("NEXUS_USER"), System.getenv("NEXUS_PASS"))' aether-deploy

如果你想让你的构建成为标准练习,你也可以在build.sbt中安全地拥有该行。

Jackson Scala Module使用它来将Travis构建部署到Sonatype OSS存储库。您可以.travis.yml查看它是如何设置的。

答案 1 :(得分:2)

您可以在此处定义的.travis.yml中设置全局变量: http://docs.travis-ci.com/user/build-configuration/#Set-environment-variables

可以使用travis gem为travis加密这些全局变量。解释例如这里: How to use travis-ci's .travis.yml to provide environment parameters for Node.js Application?