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 的构建与 Maven (Nexus) 工件联系起来的插件