我正在尝试使用Jenkins发布插件发布一个maven项目,我对它有很多疑问。
要将项目加载到工作区我正在使用ssh连接,因为代码托管在Bitbucket上,我已经为Jenkins凭据插件添加了一个私钥,我没有拉动代码的问题。
当它尝试在mercurial中创建标记并更改pom版本时,问题就出现了,无法对mercurial存储库进行身份验证。据我所知,没有使用相同的凭据,当它拉动时。我得到push failed with exit code: 255
我在pom.xml
<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中完全定义连接并使用相同的连接来检索代码?
答案 0 :(得分:1)
有没有办法避免在pom.xml中完全定义连接并使用相同的连接来检索代码?
不,Jenkins Mercurial插件用于克隆或更新存储库的凭据此后无法以任何形式用于构建。
您可以使用Credentials Binding plugin在构建期间公开您的私钥(作为“文件密码”),并将该位置作为环境变量给出。我不确定如何maven-release-plugin
将-i $…
包含在通过ssh
运行的git
命令中。如果您不依赖于私钥验证,则可能更容易将凭据绑定与用户名/密码凭据一起使用,然后将-Dpassword=$…传递给Maven版本构建。
但正如Externalising SCM credentials with Maven和其他非Jenkins特定问题所示,通常的答案是在<server>
中使用~/.m2/settings.xml
。您当然可以确保Jenkins slave已预定义此文件。更可管理且(可能)安全,您可以使用Config File Provider plugin将自定义设置文件传递到您的构建,并注入所需的凭据。