Jenkins 发布问题与 jgit
Jenkins release issue with jgit
我们正在为 git 项目使用 jgit 来检查并完成 jenkins 流程。它通过了快照构建,但发布构建失败并出现以下错误:
Building on master in workspace /home/jenkins2/jenkins/jobs/Git-end_to_end_4.0/workspace
Fetching changes from the remote Git repository
Checking out Revision 302b3bc2190db18b4661407ec67918e4f8ca65fc (refs/remotes/lighthouse/master)
Property '-Dm3plugin.lib' is already part of MAVEN_OPTS. This is usually a leftover of previous build which was forcibly stopped. Replacing the value with an updated one. Please remove it from the job configuration.
[RELEASE] Release build triggered
> jgit rev-parse --verify HEAD # timeout=10
ERROR: Failed to parse POMs
java.io.IOException: Failed retrieving current commit hash: Error performing command: jgit rev-parse --verify HEAD
at org.jfrog.hudson.release.scm.git.GitManager$CurrentCommitCallable.invoke(GitManager.java:194)
at org.jfrog.hudson.release.scm.git.GitManager$CurrentCommitCallable.invoke(GitManager.java:168)
at hudson.FilePath.act(FilePath.java:914)
at hudson.FilePath.act(FilePath.java:887)
at org.jfrog.hudson.release.scm.git.GitManager.getCurrentCommitHash(GitManager.java:52)
at org.jfrog.hudson.release.scm.git.GitCoordinator.prepare(GitCoordinator.java:74)
at org.jfrog.hudson.release.maven.MavenReleaseWrapper.setUp(MavenReleaseWrapper.java:131)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:643)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:585)
at hudson.model.Run.execute(Run.java:1676)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:231)
供参考,以下是我的版本详细信息:
Jenkins 版本:Jenkins 版本。 1.554
Git 客户端插件:1.17.1
Git 插件:2.4.0
我访问了 Whosebug 内外的几个页面,但没有得到正确的响应。将不胜感激任何进一步的建议。
- https://git-scm.com/book/en/v2/Embedding-Git-in-your-Applications-JGit
- What does git rev-parse do?
经过这么多天的摸索,甚至在赏金之后,我也没有得到 Jgit 的适当帮助。
我从 Jgit 更改为 GIT 插件,它解决了我的问题。
从您的控制台输出可以清楚地看出,您的 Jgit 无法从您工作区中存在的克隆存储库中获取最新提交的 SHA。
解析发布版本的 pom 文件需要最新的提交哈希。
一个原因(不太可能,但如果你使用相当旧的 Jgit)可能是你在 Jenkins 中配置的 Jgit 版本不支持检索 SHA 的命令当前提交((因为 Jgit 仍处于开发阶段,尚未完全替代 git-cli,这就是为什么 jenkins git-client 插件使用 git-默认情况下是 cli,而不是 Jgit,尽管后者有它自己的一系列优点......有关更多信息,请参考 Jgit 官方文档))
第二个原因(最有可能)可能是您没有使用正确的 git 插件版本、git-客户端插件版本和 Jenkins 版本的组合。所有主要的 DevOps 工具都以与插件相关的问题而闻名,因为它们的服务目的也是如此。相信我……有时候,解决插件问题对于 DevOps 工程师来说是一场噩梦。
无论如何,如果您能提供您正在使用的插件和工具的版本,那就太好了(因为它们构成了关键信息的一部分,可能会在解决问题时派上用场。此外,您的问题可能会得到如果您的问题无法提供如此重要的详细信息,将被 SO 社区成员否决)
供您参考:- 我一直在我的 Jenkins 1.596.2 中使用 Jgit,其中 git-client 插件 1.18.0,git 插件 2.4.0。对于快照和发布版本,它都像丝绸一样流畅。
希望这有帮助.. :)
我们正在为 git 项目使用 jgit 来检查并完成 jenkins 流程。它通过了快照构建,但发布构建失败并出现以下错误:
Building on master in workspace /home/jenkins2/jenkins/jobs/Git-end_to_end_4.0/workspace
Fetching changes from the remote Git repository
Checking out Revision 302b3bc2190db18b4661407ec67918e4f8ca65fc (refs/remotes/lighthouse/master)
Property '-Dm3plugin.lib' is already part of MAVEN_OPTS. This is usually a leftover of previous build which was forcibly stopped. Replacing the value with an updated one. Please remove it from the job configuration.
[RELEASE] Release build triggered
> jgit rev-parse --verify HEAD # timeout=10
ERROR: Failed to parse POMs
java.io.IOException: Failed retrieving current commit hash: Error performing command: jgit rev-parse --verify HEAD
at org.jfrog.hudson.release.scm.git.GitManager$CurrentCommitCallable.invoke(GitManager.java:194)
at org.jfrog.hudson.release.scm.git.GitManager$CurrentCommitCallable.invoke(GitManager.java:168)
at hudson.FilePath.act(FilePath.java:914)
at hudson.FilePath.act(FilePath.java:887)
at org.jfrog.hudson.release.scm.git.GitManager.getCurrentCommitHash(GitManager.java:52)
at org.jfrog.hudson.release.scm.git.GitCoordinator.prepare(GitCoordinator.java:74)
at org.jfrog.hudson.release.maven.MavenReleaseWrapper.setUp(MavenReleaseWrapper.java:131)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:643)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:585)
at hudson.model.Run.execute(Run.java:1676)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:231)
供参考,以下是我的版本详细信息:
Jenkins 版本:Jenkins 版本。 1.554
Git 客户端插件:1.17.1
Git 插件:2.4.0
我访问了 Whosebug 内外的几个页面,但没有得到正确的响应。将不胜感激任何进一步的建议。
- https://git-scm.com/book/en/v2/Embedding-Git-in-your-Applications-JGit
- What does git rev-parse do?
经过这么多天的摸索,甚至在赏金之后,我也没有得到 Jgit 的适当帮助。
我从 Jgit 更改为 GIT 插件,它解决了我的问题。
从您的控制台输出可以清楚地看出,您的 Jgit 无法从您工作区中存在的克隆存储库中获取最新提交的 SHA。 解析发布版本的 pom 文件需要最新的提交哈希。
一个原因(不太可能,但如果你使用相当旧的 Jgit)可能是你在 Jenkins 中配置的 Jgit 版本不支持检索 SHA 的命令当前提交((因为 Jgit 仍处于开发阶段,尚未完全替代 git-cli,这就是为什么 jenkins git-client 插件使用 git-默认情况下是 cli,而不是 Jgit,尽管后者有它自己的一系列优点......有关更多信息,请参考 Jgit 官方文档))
第二个原因(最有可能)可能是您没有使用正确的 git 插件版本、git-客户端插件版本和 Jenkins 版本的组合。所有主要的 DevOps 工具都以与插件相关的问题而闻名,因为它们的服务目的也是如此。相信我……有时候,解决插件问题对于 DevOps 工程师来说是一场噩梦。
无论如何,如果您能提供您正在使用的插件和工具的版本,那就太好了(因为它们构成了关键信息的一部分,可能会在解决问题时派上用场。此外,您的问题可能会得到如果您的问题无法提供如此重要的详细信息,将被 SO 社区成员否决)
供您参考:- 我一直在我的 Jenkins 1.596.2 中使用 Jgit,其中 git-client 插件 1.18.0,git 插件 2.4.0。对于快照和发布版本,它都像丝绸一样流畅。 希望这有帮助.. :)