Jenkins git fetch返回状态码143

时间:2017-07-10 12:37:57

标签: linux git jenkins ssh

我正在面对Jenkins在Linux上获取git repo的问题。我附上堆栈跟踪。我有SSH gitlab连接配置了私钥和密码。配置以凭据/系统/全局凭证(不受限制)进行。私钥的路径是/home/jenkins/.jenkins/secrets/my_private_key.pub。所有者和团队:jenkins:jenkins,其中jenkins是用户进行安装。 Permissions:600。 已使用命令行中的ssh使用密码检查私钥。 jenkins使用的git fetch命令也已使用命令行进行检查。两者都有效。 存储库URL格式如下:

git@github.com:org-name/project.git (short notation for ssh protocol)

环境:

* CentOS 7 64 bit
* openjdk version "1.8.0_131" 64 bit
* Jenkins ver. 2.67
* Git client plugin 2.4.6Git plugin 3.3.0 (3.3.1 is not helping too)
* GIT server Plugin 1.7
* GitLab Plugin 1.4.5 (1.4.6 is not helping too)
* SCM API Plugin 2.1.1
* Credentials Plugin 2.1.14
* Jenkins is run directly
* Jenkins was installed with yum installer
* Browser: Google Chrome 59
* GitLab Community Edition 9.3.5
* git version 1.8.3.1

堆栈追踪:

started by user Jenkins Admin
Building in workspace /home/jenkins/.jenkins/workspace/my_project
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@gitlab.repo:XYZ/docs/project.git # 
timeout=10
Cleaning workspace
 > git rev-parse --verify HEAD # timeout=10
No valid HEAD. Skipping the resetting
 > git clean -fdx # timeout=10
Fetching upstream changes from git@gitlab.repo:XYZ/docs/project.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --no-tags --progress git@gitlab.repo:XYZ/docs/project.git 
+refs/heads/*:refs/remotes/origin/* --depth=1
ERROR: Timeout after 10 minutes
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@gitlab.repo:XYZ/docs/project.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:809)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1076)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1107)
at hudson.scm.SCM.checkout(SCM.java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1212)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)
at hudson.model.Run.execute(Run.java:1735)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:415)
Caused by: hudson.plugins.git.GitException: Command "git fetch --no-tags --progress git@gitlab.repo:XYZ/docs/project.git +refs/heads/*:refs/remotes/origin/* --depth=1" returned status code 143:
stdout: 
stderr: 
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1903)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1622)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:348)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:807)
... 11 more
ERROR: null
Finished: FAILURE

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。使用systemctl将Jenkins作为服务运行解决了问题,而不是使用java -jar jenkins.war运行Jenkins。

提供更多详情: 根据文档,Jenkins由

启动
java -jar jenkins.war

当我用以下方式检查时,它在系统中运行时可见:

ps aux | grep jenkins

但是,在CentOS 7上,运行Jenkins的建议方法是使用systemctl命令将其作为守护程序运行。 当我用

检查时
sudo systemctl status jenkins.service

它没有用。 所以我用

开始了詹金斯
sudo systemctl start jenkins.service

并且有效。