我正在使用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
答案 0 :(得分:4)
您希望使用Travis安全环境变量,如文档所述。假设您的环境变量为NEXUS_USER
和NEXUS_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?