在使用像 Hudson/Jenkins 这样的 CI 工具时,我如何成功地将 Maven 发布插件与 GitHub(或 GitHub 企业)一起使用
Posted
技术标签:
【中文标题】在使用像 Hudson/Jenkins 这样的 CI 工具时,我如何成功地将 Maven 发布插件与 GitHub(或 GitHub 企业)一起使用【英文标题】:How do i successfully use the Maven release plug-in with GitHub (or GitHub enterprise) when using a CI tool like Hudson/Jenkins 【发布时间】:2014-11-19 14:44:48 【问题描述】:在使用像 Hudson/Jenkins 这样的 CI 工具时,如何在 GitHub(或 GitHub 企业)中成功使用 Maven 发布插件
遇到的问题是
如果 pom.xml 位于子文件夹而不是***文件夹中,Maven 不会提交。因此,后续构建失败,标签名称已存在。 尽管在运行 CI 作业的源服务器之间设置了公钥身份验证,git push 还是失败并出现以下错误之一 公钥认证失败 未知服务 git【问题讨论】:
在子文件夹中有父级不是一个好习惯。它会使所有 pom 变得比需要的更复杂。 【参考方案1】:有很多事情需要正确才能使其正常工作。
为了使 pom.xml 的子文件夹提交工作,该错误已在 Maven 发布插件 2.5.1 中得到解决。获取最新的依赖项。以下部分显示了 pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies>
<configuration>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
正确配置 pom.xml 中的 SCM 部分。要使公钥身份验证起作用,请使用 SSH 协议。对于 https 协议,将需要用户/密码,这个答案不包括。通过在服务器部分的 Maven settings.xml 中提供 user/pwd 应该是可能的。
<scm>
<developerConnection>scm:git:ssh://github.com/org/repo.git</developerConnection>
<url>https://github.com/org/repo</url>
<tag>HEAD</tag>
</scm>
在源服务器中创建一个名为 git 的用户。如果您以任何其他用户身份运行,developerConnection url 需要使用 git@github.com 而不是 github.com。 Maven 将尝试在 git push 命令中放置一个 git:****** ,但由于服务未知而失败。如果您使用任何其他用户 SSH 进入 github,它将拒绝,并且公钥身份验证失败。
使用 git 作为用户,生成 SSH 密钥并按照以下简单步骤进行配置
https://help.github.com/articles/generating-ssh-keys/
如下编辑您的 Hudson/Jenkins 工作
在源代码管理部分下,提供 git repo 的 URL。您可能需要将 git 作为协议,因为某些 CI 安装不支持 https。 在要构建的分支中提及您的分支(例如开发) 点击高级并将相同的分支名称放在“结帐/合并到本地分支(可选)”部分中使用 maven 目标 clean compile release:prepare 和 release:perform 运行您的工作。它应该可以工作。
【讨论】:
以上是关于在使用像 Hudson/Jenkins 这样的 CI 工具时,我如何成功地将 Maven 发布插件与 GitHub(或 GitHub 企业)一起使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Maven、SVN 和 Hudson(jenkins) 发布
让 Checkstyle 自定义规则在 Hudson/Jenkins 中工作
有没有办法将 Hudson / Jenkins 配置文件保存在源代码控制中?