【问题标题】:Add credentials to allow Travis-CI to use a private Nexus repository添加凭据以允许 Travis-CI 使用私有 Nexus 存储库
【发布时间】:2013-11-29 13:55:29
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你确定 Travis CI 使用的是 sbt 0.13 启动器吗?请记住,启动器版本不一定与实际启动的 sbt 版本相对应。理论上,旧的启动器可以启动新的 sbt 版本,反之亦然(尽管这并不总是有效)。
  • 启动时运行--version可以检测启动器版本。
  • @robin-green,不,我不确定。但是,我确定我在我的机器上使用的是 0.13,但它也不能在那里工作。

标签: sbt nexus travis-ci


【解决方案1】:

您希望按照文档说明使用 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 了解它是如何设置的。

【讨论】:

    【解决方案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?

    【讨论】:

    • 我们试过了,没问题。我们最终检查了原始凭据并对此感到难过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多