-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Git plugin 2.0, git client plugin 1.4.6, Windows 8, Windows Server 2011, Windows 7
A git job configured to use the command line implementation with Git plugin 2.0 and git client plugin 1.4.6 fails to clone on Windows, but successfully clones on Linux.
The problem seems to be that it is trying to configure an environment (setting SSH_PASS=echo) for the launched command, even though Windows does not use the same technique to pass environment variables to a process.
I think there was a different behavior in prior versions of git-client.
I created the job by:
- Configure a global ssh credential
- Create a new job, restrict it to only run on Windows
- Use a git ssh protocol URL (like ssh://wheezy64b/var/cache/git/mwaite/bin.git)
- Select the correct ssh credential from the dropdown list
- Add a build step (I used XShell "echo hello world")
- Save the job
- Run the job
Stack trace on Windows:
Started by user anonymous Building remotely on alan-pc in workspace C:\J\workspace\git-cli-ssh Cloning the remote Git repository Cloning repository ssh://wheezy64b/var/cache/git/mwaite/bin.git git --version git version 1.8.3.msysgit.0 using GIT_SSH to set credentials Jenkins ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not clone ssh://wheezy64b/var/cache/git/mwaite/bin.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:310) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:151) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:144) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:63) at java.lang.Thread.run(Unknown Source) Caused by: hudson.plugins.git.GitException: Command "clone --progress -o origin ssh://wheezy64b/var/cache/git/mwaite/bin.git C:\J\workspace\git-cli-ssh" returned status code 128: stdout: Cloning into 'C:\J\workspace\git-cli-ssh'... stderr: error: cannot spawn C:\Users\Alan\AppData\Local\Temp\ssh3783977685963347919.exe: No such file or directory fatal: unable to fork at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:64) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:308) ... 11 more ERROR: null Finished: FAILURE
- is duplicated by
-
JENKINS-44682 Builds fail as git push gets stuck
-
- Closed
-
[JENKINS-20356] Git CLI cannot clone on Windows using GIT_SSH to set credentials when running as a service
Component/s | New: git-client [ 17423 ] | |
Description |
Original:
A git job configured to use the command line implementation with Git plugin 2.0 and git client plugin 1.4.6 fails to clone on Windows, but successfully clones on Linux. The problem seems to be that it is trying to configure an environment (setting SSH_PASS=echo) for the launched command, even though Windows does not use the same technique to pass environment variables to a process. I created the job by: 0 - Configure a global ssh credential 1 - Create a new job 2 - Use a git ssh protocol URL (like ssh://wheezy64b/var/cache/git/mwaite/bin.git) 3 - Select the correct ssh credential from the dropdown list 4 - Add a build step (I used XShell "echo hello world") 5 - Save the job 6 - Run the job Stack trace on Windows: Started by user anonymous Building remotely on alan-pc in workspace C:\J\workspace\git-cli-ssh Cloning the remote Git repository Cloning repository ssh://wheezy64b/var/cache/git/mwaite/bin.git git --version git version 1.8.3.msysgit.0 using GIT_SSH to set credentials Jenkins ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not clone ssh://wheezy64b/var/cache/git/mwaite/bin.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:310) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:151) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:144) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:63) at java.lang.Thread.run(Unknown Source) Caused by: hudson.plugins.git.GitException: Command "clone --progress -o origin ssh://wheezy64b/var/cache/git/mwaite/bin.git C:\J\workspace\git-cli-ssh" returned status code 128: stdout: Cloning into 'C:\J\workspace\git-cli-ssh'... stderr: error: cannot spawn C:\Users\Alan\AppData\Local\Temp\ssh3783977685963347919.exe: No such file or directory fatal: unable to fork at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:64) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:308) ... 11 more ERROR: null Finished: FAILURE |
New:
A git job configured to use the command line implementation with Git plugin 2.0 and git client plugin 1.4.6 fails to clone on Windows, but successfully clones on Linux. The problem seems to be that it is trying to configure an environment (setting SSH_PASS=echo) for the launched command, even though Windows does not use the same technique to pass environment variables to a process. I think there was a different behavior in prior versions of git-client. I created the job by: 0 - Configure a global ssh credential 1 - Create a new job 2 - Use a git ssh protocol URL (like ssh://wheezy64b/var/cache/git/mwaite/bin.git) 3 - Select the correct ssh credential from the dropdown list 4 - Add a build step (I used XShell "echo hello world") 5 - Save the job 6 - Run the job Stack trace on Windows: Started by user anonymous Building remotely on alan-pc in workspace C:\J\workspace\git-cli-ssh Cloning the remote Git repository Cloning repository ssh://wheezy64b/var/cache/git/mwaite/bin.git git --version git version 1.8.3.msysgit.0 using GIT_SSH to set credentials Jenkins ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not clone ssh://wheezy64b/var/cache/git/mwaite/bin.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:310) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:151) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:144) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:63) at java.lang.Thread.run(Unknown Source) Caused by: hudson.plugins.git.GitException: Command "clone --progress -o origin ssh://wheezy64b/var/cache/git/mwaite/bin.git C:\J\workspace\git-cli-ssh" returned status code 128: stdout: Cloning into 'C:\J\workspace\git-cli-ssh'... stderr: error: cannot spawn C:\Users\Alan\AppData\Local\Temp\ssh3783977685963347919.exe: No such file or directory fatal: unable to fork at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:64) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:308) ... 11 more ERROR: null Finished: FAILURE |
Description |
Original:
A git job configured to use the command line implementation with Git plugin 2.0 and git client plugin 1.4.6 fails to clone on Windows, but successfully clones on Linux. The problem seems to be that it is trying to configure an environment (setting SSH_PASS=echo) for the launched command, even though Windows does not use the same technique to pass environment variables to a process. I think there was a different behavior in prior versions of git-client. I created the job by: 0 - Configure a global ssh credential 1 - Create a new job 2 - Use a git ssh protocol URL (like ssh://wheezy64b/var/cache/git/mwaite/bin.git) 3 - Select the correct ssh credential from the dropdown list 4 - Add a build step (I used XShell "echo hello world") 5 - Save the job 6 - Run the job Stack trace on Windows: Started by user anonymous Building remotely on alan-pc in workspace C:\J\workspace\git-cli-ssh Cloning the remote Git repository Cloning repository ssh://wheezy64b/var/cache/git/mwaite/bin.git git --version git version 1.8.3.msysgit.0 using GIT_SSH to set credentials Jenkins ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not clone ssh://wheezy64b/var/cache/git/mwaite/bin.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:310) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:151) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:144) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:63) at java.lang.Thread.run(Unknown Source) Caused by: hudson.plugins.git.GitException: Command "clone --progress -o origin ssh://wheezy64b/var/cache/git/mwaite/bin.git C:\J\workspace\git-cli-ssh" returned status code 128: stdout: Cloning into 'C:\J\workspace\git-cli-ssh'... stderr: error: cannot spawn C:\Users\Alan\AppData\Local\Temp\ssh3783977685963347919.exe: No such file or directory fatal: unable to fork at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:64) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:308) ... 11 more ERROR: null Finished: FAILURE |
New:
A git job configured to use the command line implementation with Git plugin 2.0 and git client plugin 1.4.6 fails to clone on Windows, but successfully clones on Linux. The problem seems to be that it is trying to configure an environment (setting SSH_PASS=echo) for the launched command, even though Windows does not use the same technique to pass environment variables to a process. I think there was a different behavior in prior versions of git-client. I created the job by: 0 - Configure a global ssh credential 1 - Create a new job, restrict it to only run on Windows 2 - Use a git ssh protocol URL (like ssh://wheezy64b/var/cache/git/mwaite/bin.git) 3 - Select the correct ssh credential from the dropdown list 4 - Add a build step (I used XShell "echo hello world") 5 - Save the job 6 - Run the job Stack trace on Windows: Started by user anonymous Building remotely on alan-pc in workspace C:\J\workspace\git-cli-ssh Cloning the remote Git repository Cloning repository ssh://wheezy64b/var/cache/git/mwaite/bin.git git --version git version 1.8.3.msysgit.0 using GIT_SSH to set credentials Jenkins ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not clone ssh://wheezy64b/var/cache/git/mwaite/bin.git at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:310) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:151) at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:144) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:63) at java.lang.Thread.run(Unknown Source) Caused by: hudson.plugins.git.GitException: Command "clone --progress -o origin ssh://wheezy64b/var/cache/git/mwaite/bin.git C:\J\workspace\git-cli-ssh" returned status code 128: stdout: Cloning into 'C:\J\workspace\git-cli-ssh'... stderr: error: cannot spawn C:\Users\Alan\AppData\Local\Temp\ssh3783977685963347919.exe: No such file or directory fatal: unable to fork at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$400(CliGitAPIImpl.java:64) at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:308) ... 11 more ERROR: null Finished: FAILURE |
Resolution | New: Fixed [ 1 ] | |
Status | Original: Open [ 1 ] | New: Resolved [ 5 ] |
Code changed in jenkins
User: Nicolas De Loof
Path:
src/main/java/org/jenkinsci/plugins/gitclient/CliGitAPIImpl.java
http://jenkins-ci.org/commit/git-client-plugin/8035439cc739df3b7814fdb8154b82309974e1a5
Log:
JENKINS-20356windows-compliant GIT_SSHwork in progress, failing now :
Fetching upstream changes from git@github.com:cloudbees/test.git
using GIT_SSH to set credentials
FATAL: Failed to fetch from git@github.com:cloudbees/test.git
hudson.plugins.git.GitException: Failed to fetch from git@github.com:cloudbees/test.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:617)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:841)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:866)
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.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.plugins.git.GitException: Command "fetch -t git@github.com:cloudbees/test.git +refs/heads/:refs/remotes/origin/" returned status code 128:
stdout: Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
stderr: fatal: protocol error: bad line length character:
C:
select: Bad file number