Jenkins 中的 Nexus 凭证与 sbt

Posted

技术标签:

【中文标题】Jenkins 中的 Nexus 凭证与 sbt【英文标题】:Nexus credentials in Jenkins with sbt 【发布时间】:2016-06-25 21:35:47 【问题描述】:

我正在尝试将一个 jar 发布到 nexus。我将 sbt 与 scala 一起使用,并且我有一个配置文件,其中包含所需的凭据。我在运行sbt publish 时遇到了麻烦,它给了我未经授权的错误。我需要能够将我的凭据链接到我的 sbt 构建。我正在尝试将我的配置目标设置为~/.ivy2/.credentials,但它似乎不起作用。有人对如何解决这个问题有任何建议吗?

谢谢。

【问题讨论】:

【参考方案1】:

你可以把你所有的凭证文件放在一个公共目录下,并添加一个全局配置文件来把它们都添加到sbt中。

~/.sbt/0.13/credentials.sbt

credentials ++= (Path.userHome / ".sbt" / "credentials")
  .listFiles
  .collect 
    case f if f.isFile => Credentials(f)
  
  .toSeq

~/.sbt/credentials/my-nexus-repo

realm=Sonatype Nexus Repository Manager
host=mynexusrepo.com
user=username
password=password

~/.sbt/credentials/my-artifactory-repo

realm=Artifactory Realm
host=myartifactoryrepo.com
user=username
password=password

【讨论】:

实际上,这对 Jenkins 有什么作用?有人告诉我,可能有很多服务器运行 jenkins。有没有比使用这些凭据更新所有服务器更好的方法? 你必须在每一个将要构建你的项目的詹金斯奴隶上都这样做。在实践中,我们将构建工具的全局配置和快速设置脚本保存在 git repo 中。 你能补充一下我应该把这些文件放在哪里吗,詹金斯的家(~Path.userHome)是什么?【参考方案2】:

喜欢sbt doc:

有两种方法可以为此类存储库指定凭据:

内联

credentials += Credentials("Some Nexus Repository Manager", "my.artifact.repo.net", "admin", "password123")

外部文件

credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")

凭证文件是一个属性文件,其中包含密钥领域、主机、用户和密码。例如:

realm=My Nexus Repository Manager
host=my.artifact.repo.net
user=admin
password=admin123

【讨论】:

以上是关于Jenkins 中的 Nexus 凭证与 sbt的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins:在 M2 发布插件中使用凭证插件中的凭证

是否有将 Jenkins 的构建与 Maven (Nexus) 工件联系起来的插件

Jenkins凭证介绍

Jenkins凭证介绍

如何将 Jenkins 中的特定工件部署到 Nexus 中?

Jenkins 凭证管理 - 看这一篇就够了~