-
Bug
-
Resolution: Duplicate
-
Minor
-
Jenkins 2.138.1 (from docker)
plugins up-to-date as of 2018-10-02 17:00:00 UTC
sshagent + git checkout doesn't seem to work: the `SSH_AUTH_SOCK` env var disappears from the git process environment, and thus the ssh-agent is not available to ssh started by git...
Scenario:
- create a ssh key credentials `ssh-key`
- create a pipeline job with Jenkinsfile:
node { stage('Preparation') { sshagent (['my-ssh-key']) { sh 'printenv' sh 'ssh-add -l' git 'git@github.com:foo/bar.git' } } }
- run created job
Expected result:
ssh started by git finds the correct ssh key via the ssh agent.
Actual Result:
- git fetch fails : no valid ssh key found
- `ssh-add -l` works though, and shows the key added by `sshagent`
Other tests:
- `checkout` scm instead of `git` command: same behavior: it fails to find the key
- direct `sh 'ssh -vvv git@github.com'` works
More digging:
- configure a git wrapper as `git` tool in global jenkins config to observe what happens:
#!/bin/bash printenv >& /tmp/$$.git-env ssh-add -l >& /tmp/$$.git-ssh-add-list export GIT_TRACE=1 export GIT_SSH_COMMAND="ssh -vvv" git "${@}"
- run job again
Result:
- `ssh-add -l` fails: "Could not open a connection to your authentication agent."
- `printenv` shows `SSH_AUTH_SOCK` env var is not here, which explains why the ssh agent is not usable/used
So the remaining question is: why is the `SSH_AUTH_SOCK` env var removed when executing git commands ?
- duplicates
-
JENKINS-30600 git isn't run inside build container
- Open