-
Bug
-
Resolution: Cannot Reproduce
-
Major
-
Jenkins 2.176.1
Git Plugin 3.9.1
On a freestyle project, everything works fine, but on a declarative pipeline I cannot make the reference repository to work
Example of how we check out in the pipeline:
checkout( [ $class : 'GitSCM', branches : [[ name: "${branch}" ]], doGenerateSubmoduleConfigurations: false, extensions : [ [$class : 'RelativeTargetDirectory', relativeTargetDir: targetDir ], [$class : 'CloneOption', reference: '/somefolder/repo' ] ], userRemoteConfigs : [[ url : ssh://blahblah/some.git, credentialsId: ourCredentialsId ]] ] )
and the output looks like this:
[Pipeline] git Fetching changes from the remote Git repository > git rev-parse --is-inside-work-tree # timeout=10 > git config remote.origin.url ssh://blahblah/some.git # timeout=10 Fetching upstream changes from ssh://blahblah/some.git > git --version # timeout=10 using GIT_SSH to set credentials Bitb-ssh-read > git fetch --tags --progress ssh://blahblah/some.git +refs/heads/*:refs/remotes/origin/* Checking out Revision 5eaf094e260b45a236792d8fd43f7d991bf9bbe0 (refs/remotes/origin/master) > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 > git config core.sparsecheckout # timeout=10 > git checkout -f 5eaf094e260b45a236792d8fd43f7d991bf9bbe0 Commit message: "look mommy no hands" First time build. Skipping changelog.
It is not even trying to use the reference, as there is no line like
Using reference repository: /somefolder/repo
I can't duplicate the problem you're describing.
I've created a test job that confirms the reference repository is honored by both command line git and JGit. I've confirmed that for the command line git implementation, the diagnostic message is consistently printed and the reference repository is consistently used.
The reference repository path may be specified incorrectly in the checkout step. The reference repository may be missing on the agent where the workspace is being created.