GIT_SSH not working on one of my windows slaves - jenkins

Super frustrating because this is working on one of my windows slaves, but not this one- and I cant find any config differences.
On the working slave I see this:
[Pipeline] checkout
Cloning the remote Git repository
Cloning repository git#bitbucket.org:myteam/myapp.git
> git init C:\Jenkins\workspace\test-slave123456 # timeout=10
Fetching upstream changes from git#bitbucket.org:myteam/myapp.git
> git --version # timeout=10
using GIT_SSH to set credentials mygitcreds
> git fetch --tags --progress git#bitbucket.org:myteam/myapp.git +refs/heads/*:refs/remotes/origin/* # timeout=45
> git config remote.origin.url git#bitbucket.org:myteam/myapp.git # timeout=10
> git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
> git config remote.origin.url git#bitbucket.org:myteam/myapp.git # timeout=10
Fetching upstream changes from git#bitbucket.org:myteam/myapp.git
using GIT_SSH to set credentials mygitcreds
> git fetch --tags --progress git#bitbucket.org:myteam/myapp.git +refs/heads/*:refs/remotes/origin/* # timeout=45
> git rev-parse "origin/test-slave^{commit}" # timeout=10
Checking out Revision 30f11ef09ab13f73fb9a6b75983e1bf32437f51d (origin/test-slave)
Enabling Git LFS pull
> git config core.sparsecheckout # timeout=10
> git checkout -f 30f11ef09ab13f73fb9a6b75983e1bf32437f51d # timeout=45
> git config --get remote.origin.url # timeout=10
using GIT_SSH to set credentials mygitcreds
> git lfs pull origin # timeout=45
Commit message: "test slave"
> git rev-list --no-walk 30f11ef09ab13f73fb9a6b75983e1bf32437f51d # timeout=10
But on the failing slave:
[Pipeline] checkout
Cloning the remote Git repository
Cloning repository git#bitbucket.org:myteam/myapp.git
> git init C:\Jenkins\workspace\test-slave123456 # timeout=10
Fetching upstream changes from git#bitbucket.org:myteam/myapp.git
> git --version # timeout=10
using GIT_SSH to set credentials mygitcreds
> git fetch --tags --progress git#bitbucket.org:myteam/myapp.git +refs/heads/*:refs/remotes/origin/* # timeout=45
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command "git fetch --tags --progress git#bitbucket.org:myteam/myapp.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout:
stderr: gituserfromcredbinding#bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Its the same pipeline job, same repo, same creds, and the slave should be configured the same but when I change the agent to point to the other slave it cant clone.
On the working slave all i had to do was install git for windows (turn off windows cred store), install java, and then run the jnlp jar.
Tried to do the same thing on the non working slave so I dont know why that one could be failing.

Bitbucket is not able to authenticate you on the slave where it is not working.
Reason could be:
You have not setup the ssh key for the slave where it is not working
Or
The key which is there is not associated to the account you are
trying to use.
If creds etc everything is same, what you can try :
1.Copy the keys present inside the "known_hosts" file in the working slave.
2.Paste the keys copied in step 1 above into the "known_hosts" file of non-working slave.
If in case keys are also same in both the slaves try :
ssh into non-working slave and manually try to clone once. Reason being if you have never used that slave(non-working) earlier then it might ask for : "The authenticity of host, Are you sure you want to continue connecting (yes/no)" , for which you have to say Yes, only one time.

I change git bash from ver: 2.22.0 to ver:2.12.0 (and I select the 'Enable windows cred store'), the windows slave works again

Related

gitlab oauth2 authentication in jenkins

I have configured a jenkins test job just to clone a git repo and provided the "Repository URL" like below
https://oauth2:glpat-Vn4Vgvft7-2W4P1m4b4Z#gitlab.com/test/batch/test.git
but while running the job I am getting the console error output as below
Cloning the remote Git repository
Cloning repository https://oauth2:glpat-Vn4Vgvft7-2W4P1m4b4Z#gitlab.com/test/batch/test.git
> git init /jenkins/jobs/test/workspace # timeout=10
Fetching upstream changes from https://oauth2#gitlab.com/test/batch/test.git
> git --version # timeout=10
Setting http proxy: 10.203.195.26:8080
> git fetch --tags --progress https://oauth2#gitlab.com/test/batch/test.git
+refs/heads/*:refs/remotes/origin/*
ERROR: Error cloning remote repo 'origin'
The question is, while it is cloning it is showing the URL as https://oauth2:pass#gitlab.com
but why the password is not coming while fetching?

How do you debug Jenkins Multibranch scan - not processing new branch

I have a multibranch pipeline project in Jenkins. I have had two main branches (master and production) running for some time correctly. But one of the steps is to build a new version of node docker image (on a slave Raspberry pi) for the ultimate base for the production system. I felt it would be better to isolate that step in its own branch so that we can control when we upgrade the version.
So I made a branch off master called "node" and altered the Jenkinsfile to just have the step that build node in it. I also upped the version of node it was to build (to 7.10.0).
Multibranch indexing finds the new branch, but then does nothing with it. How do I find out why?
Here is the output from the scan/indexing run
Started by timer
[Sun May 07 21:43:00 BST 2017] Starting branch indexing...
> git rev-parse --is-inside-work-tree # timeout=10
Setting origin to alan#kanga.home:dev/pasv5
> git config remote.origin.url alan#kanga.home:dev/pasv5 # timeout=10
Fetching origin...
Fetching upstream changes from origin
> git --version # timeout=10
using GIT_ASKPASS to set credentials
> git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/*
using GIT_ASKPASS to set credentials
> git ls-remote alan#kanga.home:dev/pasv5 # timeout=10
> git rev-parse --is-inside-work-tree # timeout=10
Setting origin to alan#kanga.home:dev/pasv5
> git config remote.origin.url alan#kanga.home:dev/pasv5 # timeout=10
Fetching & pruning origin...
Fetching upstream changes from origin
> git --version # timeout=10
using GIT_ASKPASS to set credentials
> git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* --prune
Getting remote branches...
Seen branch in repository origin/master
Seen branch in repository origin/node
Seen branch in repository origin/production
Seen 3 remote branches
Checking branch master
‘Jenkinsfile’ found
Met criteria
No changes detected: master (still at 8c4fddfa66f26af0089f0e55afcd2ac9e13152ef)
Checking branch production
‘Jenkinsfile’ found
Met criteria
No changes detected: production (still at fa97e2fd76895c958a484b21fb4d4852ad000c9b)
Checking branch node
Done.
[Sun May 07 21:43:01 BST 2017] Finished branch indexing. Indexing took 0.27 sec
Finished: SUCCESS
Note on master and production it notes Jenkinsfile found, but on node it doesn't. Why?
My fault - under the "Advanced" options in the project configuration of git, you can list the branches to consider. I had put in there master and production and not node. As soon as I changed that, it started processing the new branch.

Jenkins 'Honor refspec on initial clone'; parameterized refspec?

I have a Jenkins job that uses the Git plugin to clone a repository. I have configured it to take refspec configuration from a parameter in Repositories --> Advanced (want to use the same job for multiple refspecs).
This works well, until I select the "Honor refspec on initial clone" option in Advanced clone behaviors:
> git fetch --progress git#REDACTED ${REFSPEC}
> git config remote.origin.url git#REDACTED # timeout=10
> git config --add remote.origin.fetch ${REFSPEC} # timeout=10
> git config remote.origin.url git#REDACTED # timeout=10
Fetching upstream changes from git#REDACTED
using GIT_SSH to set credentials
> git fetch --progress git#REDACTED +refs/heads/*:refs/remotes/origin/*
this is correct ^^^^
As you can see, the initial fetch does not resolve the parameter $REFSPEC, though the second fetch does so correctly.
Am I doing smoething wrong, or is this a bug? Our clone times are through the roof and we need every optimization we can get. I can just add all possible refspecs to the config (this is supported), but that increases the clone time by significantly.
That is a bug. Since the refspec parameter is expanded when used without the "Honor refspec on initial clone", it should be honored as well when used with "Honor refspec on initial clone".
Submit a git-plugin bug to track the problem. Refer to JENKINS-49758 for a related bug.

"Does not meet criteria" when using Jenkins multibranch pipeline

Anyone know why Jenkins multibranch pipeline would refuse to create build branches for my BitBucket repo? A Jenkins file exists in the root of the project, but it simply says "Does not meet criteria" with no real details:
Started by user Nick Smith
> git rev-parse --is-inside-work-tree # timeout=10
Setting origin to ssh://git#abcabc.com:7999/flex/flex-dataaggregation-service.git
> git config remote.origin.url ssh://git#abcabc.com:7999/flex/flex-dataaggregation-service.git # timeout=10
Fetching & pruning origin...
Fetching upstream changes from origin
> git --version # timeout=10
using GIT_SSH to set credentials myteam ssh key
> git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* --prune
Getting remote branches...
Seen branch in repository origin/bugfix/abc
Seen branch in repository origin/master
Seen 2 remote branches
Checking branch master
Does not meet criteria
Checking branch bugfix/abc
Does not meet criteria
Done.
Finished: SUCCESS
Thanks
Nick
Seems to fix itself! (see comment above)

jenkins job build not in slave node

build job( build docker image ,code from github) in slave machine by configuration,but it do not build success...if change job in master ,it build success
slave build message :
Started by user admin
Building remotely on jenkins-slave (slave) in workspace /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq
Cloning the remote Git repository
Cloning repository git#github.com:xxxxxxx/wcount.git
> git init /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq # timeout=10
Fetching upstream changes from git#github.com:xxxxxxx/wcount.git
> git --version # timeout=10
using GIT_SSH to set credentials 71bnh6gke9kmabye9qu2qsazzpofjsa
> git -c core.askpass=true fetch --tags --progress git#github.com:xxxxxxx/wcount.git +refs/heads/*:refs/remotes/origin/*
> git config remote.origin.url git#github.com:xxxxxxx/wcount.git # timeout=10
> git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
> git config remote.origin.url git#github.com:xxxxxxx/wcount.git # timeout=10
Fetching upstream changes from git#github.com:xxxxxxx/wcount.git
using GIT_SSH to set credentials 71bnh6gke9kmabye9qu2qsazzpofjsa
> git -c core.askpass=true fetch --tags --progress git#github.com:xxxxxxx/wcount.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse origin/master^{commit} # timeout=10
Checking out Revision 5730301886fa5c02522705de817c5ddac0f0dbce (origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 5730301886fa5c02522705de817c5ddac0f0dbce
> git rev-list 5730301886fa5c02522705de817c5ddac0f0dbce # timeout=10
ERROR: Build step failed with exception
java.lang.IllegalArgumentException: configured dockerFolder '/home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq' does not exist.
at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:93)
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:75)
master workspace is /home/jenkins_home/workspace
slave workspace is /home/jenkins/workspace
i can find /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq directory in slave node。
i guess this build in master node,but i see the task in slave queue
jenkins docker-build-step plugin don't support task run on slave node,so you can change some code to support it 。
add a jar to slave which can create image and push image。then master invoke this jar in slave
Not sure if that's the case here, but it seems that Jenkins sets a path to Dockerfile in Docker build/create task at Build stage as $WORKSPACE/docker so you either have to ensure you have that folder (containing Dockerfile and other needed files) in your workspace/git repo or just remove docker from path ENV above (which is a better solution, imho) and Jenkins will read Dockerfile from main workspace/git directory. Hope that helps.

Resources