【问题标题】:Jenkins release fails mercurial authenticationJenkins 版本未能通过 mercurial 身份验证
【发布时间】:2014-09-07 08:12:06
【问题描述】:

我正在尝试使用 Jenkins 发布插件发布一个 maven 项目,对此我有很多疑问。

由于代码托管在 Bitbucket 上,为了将项目加载到工作区中,我使用 ssh 连接,我已向 Jenkins 凭据插件添加了一个私钥,并且提取代码没有问题。

当它尝试在 mercurial 中创建标签并更改 pom 版本时,问题就出现了,无法对 mercurial 存储库进行身份验证。据我了解,它没有使用与拉动相同的凭据。我得到push failed with exit code: 255

Ia 具有在pom.xml 中定义的 scm 连接

<scm>
    <connection>scm:hg:ssh://hg@bitbucket.org/test/test_repo</connection>
    <developerConnection>scm:hg:ssh://hg@bitbucket.org/test/test_repo</developerConnection>
    <url>https://bitbucket.org/test/test_repo</url>
</scm>

我应该如何在 jenkins 中定义凭据以使用它们来推送更改?

有什么方法可以避免在 pom.xml 中完全定义连接并使用用于检索代码的相同连接?

【问题讨论】:

  • 您是否尝试将私钥添加到 Jenkins home 的 .ssh 目录中?

标签: maven jenkins release cloudbees


【解决方案1】:

有什么方法可以避免在 pom.xml 中完全定义连接并使用用于检索代码的相同连接?

不,Jenkins Mercurial 插件用于克隆或更新存储库的凭据不可用于此后任何形式的构建。

您可以在构建期间使用Credentials Binding plugin 公开您的私钥(作为“文件机密”),并将位置作为环境变量提供。我不确定你如何让maven-release-plugin-i $… 包含在通过git 运行的ssh 命令中。如果您没有绑定到私钥身份验证,则可能更容易将凭据绑定与用户名/密码凭据一起使用,然后将 -Dpassword=$… 传递给您的 Maven 发布版本。

但是,正如Externalising SCM credentials with Maven 和其他非 Jenkins 特定问题所显示的那样,通常的答案是在您的 ~/.m2/settings.xml 中使用 &lt;server&gt;。您当然可以确保 Jenkins 从站已预定义此文件。更易于管理和(也许)更安全,您可以使用 Config File Provider plugin 将自定义设置文件传递给您的构建,并注入您所需的凭据。

【讨论】:

  • 我刚刚将 cloudbees 公钥添加到 bitbucket,它能够提交。
猜你喜欢
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
相关资源
最近更新 更多