Maven 与 jenkins slave 和凭证一起发布:如何将 SCM 凭证传递给 maven?
Maven release with jenkins slave and Credentials : how to pass SCM credentials to maven?
我正在使用 Jenkins master/slave 设置。我希望 Jenkins 有一个 "source" 的凭据信息。不是keys/passwords散落一地。
所以,我不想在 Jenkins 中定义我的 SCM(使用来自 Jenkins 凭据提供者的凭据)然后在 pom 中再次定义。xml/settings.xml/id_rsa.pem 取决于工作.每个人都喜欢按照自己的方式做事,我们最终会到处都是密钥文件或密码的副本。迟早有人将 pom 推送到 public 存储库,我们的服务器就会受到威胁...
我看不到将凭据从 Jenkins 获取到某个 maven 发布插件可以使用它们的地方的可维护方法。我错过了什么?
(尝试将标签推送到 git
时,maven 发布失败
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] Permission denied (publickey).
)
我显然可以定义一个 "file" 安装在包含 pem 的从机上(我可以想出几种方法来做到这一点)但是当我们轮换密钥以记住它时,我的维护很头疼在多个位置。否则,快照工作一个月,然后发布失败,没有人能理解为什么 mvn 突然无法推送到 git.
(注意只有密钥登录,没有密码)
整个早上都在想办法解决这个问题,然后在 "Build environment" 部分找到 "SSH Agent" 复选框。勾选它,并提供正确的凭据,它就会起作用。
我考虑过删除问题,但在阅读了许多其他高维护建议(涉及 .pem 文件的副本)后,我想我会离开它。
为了使它与 github 存储库一起工作,我必须安装 SSH 代理(如 @P_W999 建议的那样)并将以下配置添加到我的 pom.xml:
[...]
<build>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
[...]
</plugins>
</build>
<scm>
<connection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</developerConnection>
<url>https://github.com/${mygithubusername}/${mygithubreponame}.git</url>
<tag>v@{project.version}</tag>
</scm>
[...]
我正在使用 Jenkins master/slave 设置。我希望 Jenkins 有一个 "source" 的凭据信息。不是keys/passwords散落一地。
所以,我不想在 Jenkins 中定义我的 SCM(使用来自 Jenkins 凭据提供者的凭据)然后在 pom 中再次定义。xml/settings.xml/id_rsa.pem 取决于工作.每个人都喜欢按照自己的方式做事,我们最终会到处都是密钥文件或密码的副本。迟早有人将 pom 推送到 public 存储库,我们的服务器就会受到威胁...
我看不到将凭据从 Jenkins 获取到某个 maven 发布插件可以使用它们的地方的可维护方法。我错过了什么? (尝试将标签推送到 git
时,maven 发布失败[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] Permission denied (publickey).
)
我显然可以定义一个 "file" 安装在包含 pem 的从机上(我可以想出几种方法来做到这一点)但是当我们轮换密钥以记住它时,我的维护很头疼在多个位置。否则,快照工作一个月,然后发布失败,没有人能理解为什么 mvn 突然无法推送到 git.
(注意只有密钥登录,没有密码)
整个早上都在想办法解决这个问题,然后在 "Build environment" 部分找到 "SSH Agent" 复选框。勾选它,并提供正确的凭据,它就会起作用。 我考虑过删除问题,但在阅读了许多其他高维护建议(涉及 .pem 文件的副本)后,我想我会离开它。
为了使它与 github 存储库一起工作,我必须安装 SSH 代理(如 @P_W999 建议的那样)并将以下配置添加到我的 pom.xml:
[...]
<build>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
[...]
</plugins>
</build>
<scm>
<connection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/${mygithubusername}/${mygithubreponame}.git</developerConnection>
<url>https://github.com/${mygithubusername}/${mygithubreponame}.git</url>
<tag>v@{project.version}</tag>
</scm>
[...]