[JIRA] (JENKINS-59497) Git clone in pipeline ignoring reference repo

27 views
Skip to first unread message

vincenzo.melandri@gmail.com (JIRA)

unread,
Sep 23, 2019, 9:00:04 PM9/23/19
to jenkinsc...@googlegroups.com
Vincenzo Melandri created an issue
 
Jenkins / Bug JENKINS-59497
Git clone in pipeline ignoring reference repo
Issue Type: Bug Bug
Assignee: Mark Waite
Components: git-plugin
Created: 2019-09-24 00:59
Environment: Jenkins 2.176.1
Git Plugin 3.9.1
Labels: pipeline git
Priority: Major Major
Reporter: Vincenzo Melandri

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

 

 

 

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 12:10:03 AM9/24/19
to jenkinsc...@googlegroups.com
Mark Waite assigned an issue to Unassigned
Change By: Mark Waite
Assignee: Mark Waite

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 12:29:03 AM9/24/19
to jenkinsc...@googlegroups.com
Change By: Mark Waite
Status: Open Fixed but Unreleased
Resolution: Cannot Reproduce

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 12:29:03 AM9/24/19
to jenkinsc...@googlegroups.com
Mark Waite commented on Bug JENKINS-59497
 
Re: Git clone in pipeline ignoring reference 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.

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 12:31:02 AM9/24/19
to jenkinsc...@googlegroups.com

The RelativeTargetDir extension is not recommended for use in Pipeline. The dir() and ws() directives are native Pipeline directives that are better suited for use than the git plugin specific extension RelativeTargetDir. That does not affect this case, but is good advice for your implementation. My test cases used both dir() and RelativeTargetDir successfully.

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 12:31:04 AM9/24/19
to jenkinsc...@googlegroups.com

vincenzo.melandri@gmail.com (JIRA)

unread,
Sep 24, 2019, 3:02:03 PM9/24/19
to jenkinsc...@googlegroups.com
Vincenzo Melandri commented on Bug JENKINS-59497
 
Re: Git clone in pipeline ignoring reference repo

I made a brand new job that just checkouts the repo and cats a file to isolate it from interference and I found out that it works, but there is still a massive difference:
A test freestyle jobs checks out the repo in under 5 seconds, while the job defined with pipeline takes upward of 40s, which is still faster than a non-referenced checkout, which takes about 400 seconds.. 

mark.earl.waite@gmail.com (JIRA)

unread,
Sep 24, 2019, 5:55:02 PM9/24/19
to jenkinsc...@googlegroups.com

Vincenzo Melandri that seems like a separate bug report is needed. Pipeline has some overhead compared to Freestyle but that much overhead is beyond what I expected.

Reply all
Reply to author
Forward
0 new messages