Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Jenkins getting Authentication Failed error for git submodule update?

I have a Jenkins job that pulls from a BitBucket repo that was working fine, and still is. However, I've added a submodule and Jenkins is choking on that. Here is a clip from the Jenkins console output:

FATAL: Command "C:\Program Files (x86)\Git\cmd\git.exe submodule update" returned status code 1: stdout: Cloning into 'submodules/my.repo'...

stderr: fatal: Authentication failed

I'm using an ssh key which I added to my deployment keys for the main repo in BitBucket. And that's always worked. I added the same key to my submodule repo's deployment keys. Can anyone tell me why authentication is failing?

like image 342
Sean Avatar asked Jun 14 '13 02:06

Sean


People also ask

What does git submodule update -- Remote do?

For example, submodule update --remote --merge will merge upstream submodule changes into the submodules, while submodule update --merge will merge superproject gitlink changes into the submodules.

Does git pull update submodule?

Even when used with git pull , rather than git fetch , this option only makes the fetching recursive. It will not change what commit is checked out in the submodules at all. So git submodule update is still necessary, as noted by @Artem.


1 Answers

Versions of the Jenkins git plugin prior to 3.0.0 did not support submodule authentication. Submodule authentication using the same credentials and protocol as the parent repository are now supported with the Jenkins git plugin. Support was added in the 10 Sep 2016 release of Jenkins git plugin 3.0.0.

The submodule configuration portion of the job definition page ("Additional Behaviours" > "Advanced Sub-modules Behaviours") includes a checkbox "Use credentials from default remote of parent repository". Check that box and the credentials from the parent repository will be used for the submodules.

Note: the repository cloning protocols must be the same (ssh or https) for the parent repository and all the submodules, otherwise the parent credentials can't be used with the submodule repository.

like image 188
Mark Waite Avatar answered Sep 17 '22 08:09

Mark Waite