[Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset -...

---------------------java

如需转载,转载请注明出处。ios

---------------------git

今日发现全部IOS构建相关的job所有失败,并提示以下错误:fetch

ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from http://git.xxxx/ios/xxxx-ios.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:810) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1066) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1097) at hudson.scm.SCM.checkout(SCM.java:485) at hudson.model.AbstractProject.checkout(AbstractProject.java:1269) 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:1741) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:410) Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128: stdout: stderr: error: bad signature fatal: index file corrupt at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1719) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1695) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1691) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:1321) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.reset(CliGitAPIImpl.java:372) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clean(CliGitAPIImpl.java:670) at hudson.plugins.git.GitAPI.clean(GitAPI.java:311) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:884) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:859) at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:818) at hudson.remoting.UserRequest.perform(UserRequest.java:152) at hudson.remoting.UserRequest.perform(UserRequest.java:50) at hudson.remoting.Request$2.run(Request.java:332) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at hudson.remoting.Engine$1$1.run(Engine.java:85) at java.lang.Thread.run(Thread.java:745) at ......remote call to qa-ios4-macpro(Native Method) at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416) at hudson.remoting.UserResponse.retrieve(UserRequest.java:252) at hudson.remoting.Channel.call(Channel.java:781) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:249) at com.sun.proxy.$Proxy76.clean(Unknown Source) at org.jenkinsci.plugins.gitclient.RemoteGitImpl.clean(RemoteGitImpl.java:453) at hudson.plugins.git.extensions.impl.CleanBeforeCheckout.decorateFetchCommand(CleanBeforeCheckout.java:32) at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:806) ... 11 more ERROR: null

解决思路:ui

其实遇到这种问题的缘由有不少,大体以下:spa

1. Linux/Mac的权限问题:确保启动Jenkins服务的用户自身有Jenkins所在目录的权限。(好比用非root用户权限进行操做)code

2. 帐号权限问题:确保Job里选择的Credentials帐号有权限,GIT对应的SSH配置存在。orm

3. 工程目录损坏问题:在workspace工程目录下,尝试git命令是否可用。blog

发现提示:索引

error: bad signature
fatal: index file corrupt

说明:

index file在git中指的是.git/index这个文件。这个文件保存的是暂存区的信息,也就是索引信息。

能够经过 git ls-files --stage 来查看暂存区的内容。

经过错误信息fatal:index file corrupt,能够看出这个文件已经损坏。 能够经过git reset来恢复。

解决方法:

1. 进入工程目录下:/Users/Shared/Jenkins/Home/jenkins/workspace/xxxx-ios/.git

2. 删除或重命名.git目录下的index文件:rm -f .git/index或mv .git/index.bak

3. 从新生成index文件:git reset

4. 检查是否可用:git status

 

再次构建,成功,cheers~

 

 

今日发现,提交代码后,Jenkins没有自动构建,进入相应工程目录后发现:

提示以下:

fatal: index file smaller than expected

 使用本文所写的方法便可解决。

相关文章
相关标签/搜索