28
votes

I am new to Jenkins, I am getting following error while cloning repository from GitHub.

I tried to search all relevant issues here but could find exact stacktstrace with answers.

I am trying to clone repository which requires username and password, I am providing SSH:// repository-path in job configuration settings for my job. I have not done any .ssh related settings yet as this seems to be different problem than security issue with GIT repository.

I couldn't figure out what comment Jenkins is trying to execute, which file/directory it is not finding clueless.

Here is my exact stack trace from Jenkins job:

Caused by: java.io.IOException: Cannot run program: Error trying to determine the git version: Error performing command: --version Assuming 1.6 ERROR: Error cloning remote repo 'myRE' : Could not clone [email protected]:myORG/RVL.myProj.git hudson.plugins.git.GitException: Could not clone [email protected]:myORG/RVL.myProj.git at hudson.plugins.git.GitAPI.clone(GitAPI.java:268) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1122) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1064) at hudson.FilePath.act(FilePath.java:842) at hudson.FilePath.act(FilePath.java:824) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1064) at hudson.model.AbstractProject.checkout(AbstractProject.java:1256) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494) at hudson.model.Run.execute(Run.java:1502) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: hudson.plugins.git.GitException: Error performing command: clone -o RVL.myProj [email protected]:myORG/RVL.myProj.git /var/lib/jenkins/jobs/myProj/workspace at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:862) at hudson.plugins.git.GitAPI.access$000(GitAPI.java:40) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:264) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:244) at hudson.FilePath.act(FilePath.java:842) at hudson.FilePath.act(FilePath.java:824) at hudson.plugins.git.GitAPI.clone(GitAPI.java:244) ... 13 more Caused by: java.io.IOException: Cannot run program "": error=2, No such file or directory at java.lang.ProcessBuilder.start(Unknown Source) at hudson.Proc$LocalProc.(Proc.java:244) at hudson.Proc$LocalProc.(Proc.java:216) at hudson.Launcher$LocalLauncher.launch(Launcher.java:709) at hudson.Launcher$ProcStarter.start(Launcher.java:338) at hudson.Launcher$ProcStarter.join(Launcher.java:345) at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:843) ... 19 more Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(Unknown Source) at java.lang.Pro

7
What happens if you type "git --version" at the command line on the Jenkins master? This looks like you do not have git installed.CIGuy
Looks like there was problem in GIT configuration of Jenkins, gave full path of GIT instead of only "git" (suggested by jenkins)Sagar

7 Answers

53
votes

I encountered and fixed the same problem :)

There are two way to configure the path of git:

  1. On Jenkins Master

    a. Enter Jenkins System Configure (Jenkins -> Manage Jenkins -> Configure System )

    b. Find the Git item and Configure the git installation (specify the git path on Jenkins Master)

  2. On Jenkins Slave

    a. Enter Jenkins Slave's Configure

    b. Check the "Tool Locations" Checkbox and specify the path of git on the Jenkins Slave.

In my situation, I don't have the privilege to access the Jenkins Master. So I install the git on the Jenkins Slave and add it to Jenkins Slave's Configure.

3
votes

This seems to be a bug, see JENKINS-16523 where I posted a workaround.

2
votes

I went through the same issue.

I noticed the mixture of git configuration in individual jobs "/var/lib/jenkins/jobs/job_name/config.xml":

[[email protected] jobs]# find . -maxdepth 2 -name     config.xml|xargs grep '<gitTool>'
./job1/config.xml:    <gitTool>git</gitTool>
./job2/config.xml:    <gitTool>Default</gitTool>
./job3/config.xml:    <gitTool>git</gitTool>
./job4/config.xml:    <gitTool>Default</gitTool>

So I fixed the name of gitTool and restarted the Jenkins. It looks like the git configuration doesn't properly and the change of git is not propagated to all jobs.

Also be aware that the git configuration can differ in .xml file with configuration and the configuration in webface of the Jenkins!!!

1
votes
  1. Run git --version on either Master or Slave
  2. If you do not get anything, that means Git is not installed
  3. If you think Git is installed, add path of the Git executable (e.g. C:\Program Files\Git\cmd) to the PATH environment variable
  4. Run git --version on either Master or Slave and make sure that you get the valid version
0
votes

I came across same issue after I created a new JOB, fixed it correcting the slave name (with GIT Installed) in Label Expression under Restrict where this project can be run.

0
votes

Except for step answered by superlee, you need config your node properties for your server side, the Tool Locations if your local is windows system, refer to below screenshot:

tool location for your server side

0
votes

It could happen due to a variety of reasons.

  1. You might not have git installed
  2. Jenkins is not able to use the git binary
  3. Permission issue.

This blog , Jenkins Git Clone Error, explains all the scenarios of this error and its solution.