致命错误:Jenkins IIS无效ID

3

我正在尝试设置Jenkins从Bitbucket拉取和构建项目。

我在IIS 8.5 Server 2012 R2上使用此功能。我已经安装了Git和Bitbucket插件。

我已经设置了以下项目:

Branch Specifier (blank for 'any'): "origin/master"

我不确定这是否是问题的一部分,但我的仓库中只有那个分支。

在运行构建时,我遇到了以下错误,我找不到无效 ID 是什么,有人能指导我吗?

看起来它正在从最后一次提交中获取哈希值,然后说无效的 ID,我不确定那是哈希 ID 还是某种环境 ID,因为它引用了构建目录(该目录存在并具有正确的权限),当它失败时

错误日志:

Started by user Stu
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Fenix
 > C:\Program Files\Git\git-cmd.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > C:\Program Files\Git\git-cmd.exe config remote.origin.url https://user@bitbucket.org/project/project-fenix.git # timeout=10
Fetching upstream changes from https://user@bitbucket.org/project/project-fenix.git
 > C:\Program Files\Git\git-cmd.exe --version # timeout=10
using GIT_ASKPASS to set credentials 
 > C:\Program Files\Git\git-cmd.exe fetch --tags https://user@bitbucket.org/project/project-fenix.git +refs/heads/*:refs/remotes/origin/*
 > C:\Program Files\Git\git-cmd.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
FATAL: Invalid id: C:\Program Files (x86)\Jenkins\workspace\Fenix>
org.eclipse.jgit.errors.InvalidObjectIdException: Invalid id: C:\Program Files (x86)\Jenkins\workspace\Fenix>
    at org.eclipse.jgit.lib.ObjectId.fromString(ObjectId.java:232)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.revParse(CliGitAPIImpl.java:689)
    at hudson.plugins.git.GitAPI.revParse(GitAPI.java:316)
    at hudson.plugins.git.util.DefaultBuildChooser.getHeadRevision(DefaultBuildChooser.java:130)
    at hudson.plugins.git.util.DefaultBuildChooser.getCandidateRevisions(DefaultBuildChooser.java:112)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:992)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1095)
    at hudson.scm.SCM.checkout(SCM.java:495)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
    at hudson.model.Run.execute(Run.java:1728)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:404)
Finished: FAILURE

我看到很多地方提到使用git.cmd而不是.exe,但是在我的Git目录中没有cmd文件。如果我使用任何一个.exe文件,它会超时并且无法建立连接,因此我正在使用C:\Program Files\Git\git-cmd.exe并且至少连接了起来。
Git版本为Git for Windows v2.10.2。
如果有人能指导我正确的方向,那将非常感激,因为我在网上找不到与此特定错误相关的任何信息。
2个回答

6
请不要使用git-cmd.exe作为Jenkins的git实现。请使用来自git安装目录下的bin目录或cmd目录中的git.exe。这样做效果更好,经过测试,并且是支持的方式。
据我所知,git-cmd.exe是与git捆绑在一起的程序,用于启动包含git路径的Windows命令处理器。我很惊讶它能运行任何git命令,但它似乎确实可以。它无法运行所有git命令,并提供新颖有趣的错误消息。
请参考JENKINS-45212,其中给出了一个使用该git程序形式错误的用例,而git.exe则如预期般运行。

0

首先要尝试的测试是去除:

  • 任何空格
  • 任何特殊字符(如(x86)

由于您已经下载了Git的便携式版本,因此您可以将该存档解压缩到例如C:\prgs\gits\git2.10.2

然后,您可以将Jenkins工作区设置为更简单的路径。

然后检查问题是否仍然存在。


来自您的Jenkins作业日志

> C:\ick\git\git-cmd.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
FATAL: Invalid id: C:\ick\jenkins\workspace\fenix>
org.eclipse.jgit.errors.InvalidObjectIdException: Invalid id: C:\ick\jenkins\workspace\fenix>
    at org.eclipse.jgit.lib.ObjectId.fromString(ObjectId.java:232)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.revParse(CliGitAPIImpl.java:689)
    at hudson.plugins.git.GitAPI.revParse(GitAPI.java:316)
    at hudson.plugins.git.util.DefaultBuildChooser.getHeadRevision(DefaultBuildChooser.java:130)
    at hudson.plugins.git.util.DefaultBuildChooser.getCandidateRevisions(DefaultBuildChooser.java:112)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:992)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1095)
    at hudson.scm.SCM.checkout(SCM.java:495)

看起来像是问题 34886。在你的情况下,可能远程的 BitBucket 仓库没有名为“master”的分支,导致无法解引用 "refs/remotes/origin/master^{commit}"。


嗨@VonC,感谢您的建议,我已将Git和Jenkins移动到C:/ick/,但我仍然遇到相同的错误:pastebin.com/bBYfvZA4。我无法想象哪个ID是无效的?是否需要设置SSH密钥,而不仅仅是用户名和密码认证? - Stu
嗨@VonC,非常感谢,我相信它可以。这是来自同一存储库的几个控制台输出:http://pastebin.com/U2iQh2Yj。我在Jenkins项目设置中将“分支规范”设置为`*/master`,似乎在构建中调用了`refs/remotes/origin/master`。 - Stu
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接