Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-47824

git plugin 3.6.3 lost support for tagged pipeline shared libraries

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Blocker
    • Resolution: Fixed
    • Component/s: git-plugin
    • Labels:
      None
    • Environment:
      Jenkins 2.73.3-rc
      Git plugin 3.6.3
      Git client plugin 2.6.0
    • Similar Issues:

      Description

      A pipeline global shared library configured to checkout at a specific tag was able to checkout with git plugin 3.3.2. With git plugin 3.6.3, that checkout fails with the message:

      > git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1
      ERROR: Error fetching remote repo 'origin'
      hudson.plugins.git.GitException: Failed to fetch from https://github.com/cloudbees/elroy-libs.git
      	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:825)
      	at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1092)
      	at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1123)
      	at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:113)
      	at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.doRetrieve(SCMSourceRetriever.java:112)
      	at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.retrieve(SCMSourceRetriever.java:84)
      	at org.jenkinsci.plugins.workflow.libs.LibraryAdder.retrieve(LibraryAdder.java:153)
      	at org.jenkinsci.plugins.workflow.libs.LibraryAdder.add(LibraryAdder.java:134)
      	at org.jenkinsci.plugins.workflow.libs.LibraryDecorator$1.call(LibraryDecorator.java:125)
      	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
      	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
      	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
      	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
      	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
      	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
      	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
      	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
      	at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:269)
      	at hudson.model.ResourceController.execute(ResourceController.java:97)
      	at hudson.model.Executor.run(Executor.java:421)
      Caused by: hudson.plugins.git.GitException: Command "git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1" returned status code 128:
      stdout: 
      stderr: fatal: Couldn't find remote ref refs/heads/v1.1
      
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1970)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1689)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:380)
      	at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:823)
      	... 23 more
      ERROR: Error fetching remote repo 'origin'
      

      It appears that the refspec being requested in the git fetch is referring to the tag name v1.1 as though it were a branch name. It is requesting a refspec +refs/heads/v1.1:refs/remotes/origin/v1.1 when it should either refer to a wildcard in the refspec, or to a valid branch name in the refspec.

      To see the checkout work successfully with the earlier version:

      1. Clone my private docker repo
        $ git lfs clone git@github.com:MarkEWaite/docker-private-lfs.git jenkins47824 && cd jenkins47824
      2. Checkout the working branch configuration
        $ git lfs fetch origin origin/cjt-with-plugins-add-credentials
        $ git checkout -b cjt-with-plugins-add-credentials -t origin/cjt-with-plugins-add-credentials
      3. Build the working branch configuration with docker
        $ docker build -t jenkins47824:working .
      4. Run the working branch configuration with docker
        $ docker run -i --rm --publish 9090:8080 -t jenkins47824:working
      5. Connect to port 9090, sign up (to login), open the "Bugs - Individual" folder and the "support-analytics" multi-branch Pipeline
      6. Index the support-analytics multibranch pipeline, and confirm that the two jobs run, and are able to clone the shared library. The jobs will fail, but they will be able to clone the shared library

      Perform the same steps, but with cjt-with-plugins-add-credentials-no-cap as the branch. That job will fail with the stack trace listed above.

      1. Clone my private docker repo
        $ git lfs clone git@github.com:MarkEWaite/docker-private-lfs.git jenkins47824bad && cd jenkins47824bad
      2. Checkout the working branch configuration
        $ git lfs fetch origin origin/cjt-with-plugins-add-credentials-no-cap
        $ git checkout -b cjt-with-plugins-add-credentials-no-cap -t origin/cjt-with-plugins-add-credentials-no-cap
      3. Build the working branch configuration with docker
        $ docker build -t jenkins47824:bad .
      4. Run the working branch configuration with docker
        $ docker run -i --rm --publish 9095:8080 -t jenkins47824:bad
      5. Connect to port 9095, sign up (to login), open the "Bugs - Individual" folder and the "support-analytics" multi-branch Pipeline
      6. Index the support-analytics multibranch pipeline, and confirm that the two jobs run, and are not able to clone the shared library. The jobs will fail with the message listed above

        Attachments

          Issue Links

            Activity

            markewaite Mark Waite created issue -
            markewaite Mark Waite made changes -
            Field Original Value New Value
            Description A pipeline global shared library configured to checkout at a specific tag was able to checkout with git plugin 3.3.2. With git plugin 3.6.3, that checkout fails with the message:

            {noformat}
            > git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1
            ERROR: Error fetching remote repo 'origin'
            hudson.plugins.git.GitException: Failed to fetch from https://github.com/cloudbees/elroy-libs.git
            at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:825)
            at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1092)
            at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1123)
            at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:113)
            at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.doRetrieve(SCMSourceRetriever.java:112)
            at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.retrieve(SCMSourceRetriever.java:84)
            at org.jenkinsci.plugins.workflow.libs.LibraryAdder.retrieve(LibraryAdder.java:153)
            at org.jenkinsci.plugins.workflow.libs.LibraryAdder.add(LibraryAdder.java:134)
            at org.jenkinsci.plugins.workflow.libs.LibraryDecorator$1.call(LibraryDecorator.java:125)
            at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
            at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
            at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
            at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
            at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
            at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
            at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
            at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
            at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
            at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
            at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
            at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
            at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:269)
            at hudson.model.ResourceController.execute(ResourceController.java:97)
            at hudson.model.Executor.run(Executor.java:421)
            Caused by: hudson.plugins.git.GitException: Command "git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1" returned status code 128:
            stdout:
            stderr: fatal: Couldn't find remote ref refs/heads/v1.1

            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1970)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1689)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:380)
            at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:823)
            ... 23 more
            ERROR: Error fetching remote repo 'origin'
            {noformat}
             
            It appears that the refspec being requested in the {{git fetch}} is referring to the tag name {{v1.1}} as though it were a branch name. It is requesting a refspec {{+refs/heads/v1.1:refs/remotes/origin/v1.1}} when it should either refer to a wildcard in the refspec, or to a valid branch name in the refspec.

            To see the checkout work successfully with the earlier version:
            # Clone my private docker repo
                $ git lfs clone git@github.com:MarkEWaite/docker-private-lfs.git bug && cd bug
            # Checkout the working branch configuration
                $ git lfs fetch origin origin/cjt-with-plugins-add-credentials
                $ git checkout -b cjt-with-plugins-add-credentials -t origin/cjt-with-plugins-add-credentials
            # Build the working branch configuration with docker
                $ docker build -t BUG:working .
            # Run the working branch configuration with docker
                $ docker run -i --rm --publish 9090:8080 -t bug:working
            # Connect to port 9090, sign up, and open the "Bugs - Individual" folder and the "support-analytics" multi-branch Pipeline
            # Index the branch, and confirm that the two jobs run, and are able to clone the shared library. The jobs will fail, but they will be able to clone the shared library

            Perform the same steps, but with cjt-with-plugins-add-credentials-no-cap as the branch. That job will fail with the stack trace listed above.
            A pipeline global shared library configured to checkout at a specific tag was able to checkout with git plugin 3.3.2. With git plugin 3.6.3, that checkout fails with the message:

            {noformat}
            > git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1
            ERROR: Error fetching remote repo 'origin'
            hudson.plugins.git.GitException: Failed to fetch from https://github.com/cloudbees/elroy-libs.git
            at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:825)
            at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1092)
            at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1123)
            at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:113)
            at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.doRetrieve(SCMSourceRetriever.java:112)
            at org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever.retrieve(SCMSourceRetriever.java:84)
            at org.jenkinsci.plugins.workflow.libs.LibraryAdder.retrieve(LibraryAdder.java:153)
            at org.jenkinsci.plugins.workflow.libs.LibraryAdder.add(LibraryAdder.java:134)
            at org.jenkinsci.plugins.workflow.libs.LibraryDecorator$1.call(LibraryDecorator.java:125)
            at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
            at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
            at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
            at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
            at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
            at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
            at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
            at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
            at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
            at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
            at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
            at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
            at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:269)
            at hudson.model.ResourceController.execute(ResourceController.java:97)
            at hudson.model.Executor.run(Executor.java:421)
            Caused by: hudson.plugins.git.GitException: Command "git fetch --no-tags --progress https://github.com/cloudbees/elroy-libs.git +refs/heads/v1.1:refs/remotes/origin/v1.1" returned status code 128:
            stdout:
            stderr: fatal: Couldn't find remote ref refs/heads/v1.1

            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1970)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1689)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
            at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:380)
            at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:823)
            ... 23 more
            ERROR: Error fetching remote repo 'origin'
            {noformat}
             
            It appears that the refspec being requested in the {{git fetch}} is referring to the tag name {{v1.1}} as though it were a branch name. It is requesting a refspec {{+refs/heads/v1.1:refs/remotes/origin/v1.1}} when it should either refer to a wildcard in the refspec, or to a valid branch name in the refspec.

            To see the checkout work successfully with the earlier version:
            # Clone my private docker repo
                $ git lfs clone git@github.com:MarkEWaite/docker-private-lfs.git jenkins47824 && cd jenkins47824
            # Checkout the working branch configuration
                $ git lfs fetch origin origin/cjt-with-plugins-add-credentials
                $ git checkout -b cjt-with-plugins-add-credentials -t origin/cjt-with-plugins-add-credentials
            # Build the working branch configuration with docker
                $ docker build -t jenkins47824:working .
            # Run the working branch configuration with docker
                $ docker run -i --rm --publish 9090:8080 -t jenkins47824:working
            # Connect to port 9090, sign up (to login), open the "Bugs - Individual" folder and the "support-analytics" multi-branch Pipeline
            # Index the support-analytics multibranch pipeline, and confirm that the two jobs run, and are able to clone the shared library. The jobs will fail, but they will be able to clone the shared library

            Perform the same steps, but with cjt-with-plugins-add-credentials-no-cap as the branch. That job will fail with the stack trace listed above.
            # Clone my private docker repo
                $ git lfs clone git@github.com:MarkEWaite/docker-private-lfs.git jenkins47824bad && cd jenkins47824bad
            # Checkout the working branch configuration
                $ git lfs fetch origin origin/cjt-with-plugins-add-credentials-no-cap
                $ git checkout -b cjt-with-plugins-add-credentials-no-cap -t origin/cjt-with-plugins-add-credentials-no-cap
            # Build the working branch configuration with docker
                $ docker build -t jenkins47824:bad .
            # Run the working branch configuration with docker
                $ docker run -i --rm --publish 9095:8080 -t jenkins47824:bad
            # Connect to port 9095, sign up (to login), open the "Bugs - Individual" folder and the "support-analytics" multi-branch Pipeline
            # Index the support-analytics multibranch pipeline, and confirm that the two jobs run, and are *not* able to clone the shared library. The jobs will fail with the message listed above
            markewaite Mark Waite made changes -
            Assignee Mark Waite [ markewaite ] Stephen Connolly [ stephenc ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Stephen Connolly
            Path:
            src/main/java/jenkins/plugins/git/AbstractGitSCMSource.java
            src/test/java/jenkins/plugins/git/AbstractGitSCMSourceTest.java
            http://jenkins-ci.org/commit/git-plugin/addcc0a57f2a205f7a79efda4ca15e7b6d937954
            Log:
            [FIXED JENKINS-47824] Looks like we have to do much more hoop jumping to correctly resolve things

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/jenkins/plugins/git/AbstractGitSCMSource.java src/test/java/jenkins/plugins/git/AbstractGitSCMSourceTest.java http://jenkins-ci.org/commit/git-plugin/addcc0a57f2a205f7a79efda4ca15e7b6d937954 Log: [FIXED JENKINS-47824] Looks like we have to do much more hoop jumping to correctly resolve things
            scm_issue_link SCM/JIRA link daemon made changes -
            Status Open [ 1 ] Resolved [ 5 ]
            Resolution Fixed [ 1 ]
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Mark Waite
            Path:
            src/main/java/jenkins/plugins/git/AbstractGitSCMSource.java
            src/test/java/jenkins/plugins/git/AbstractGitSCMSourceTest.java
            http://jenkins-ci.org/commit/git-plugin/d2ba4c13d1c18665207fd78e23d7c2c7a17e19b1
            Log:
            Merge pull request #551 from stephenc/jenkins-47824

            [FIXED JENKINS-47824] Looks like we have to do much more hoop jumping to correctly resolve things

            Compare: https://github.com/jenkinsci/git-plugin/compare/2b072d5559ad...d2ba4c13d1c1

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Mark Waite Path: src/main/java/jenkins/plugins/git/AbstractGitSCMSource.java src/test/java/jenkins/plugins/git/AbstractGitSCMSourceTest.java http://jenkins-ci.org/commit/git-plugin/d2ba4c13d1c18665207fd78e23d7c2c7a17e19b1 Log: Merge pull request #551 from stephenc/jenkins-47824 [FIXED JENKINS-47824] Looks like we have to do much more hoop jumping to correctly resolve things Compare: https://github.com/jenkinsci/git-plugin/compare/2b072d5559ad...d2ba4c13d1c1
            stephenconnolly Stephen Connolly made changes -
            Remote Link This issue links to "Page (Jenkins Wiki)" [ 17990 ]
            Hide
            markewaite Mark Waite added a comment -

            Fixed in git plugin 3.6.4 released 4 Nov 2017

            Show
            markewaite Mark Waite added a comment - Fixed in git plugin 3.6.4 released 4 Nov 2017
            vivek Vivek Pandey made changes -
            Remote Link This issue links to "Page (Jenkins Wiki)" [ 18006 ]
            Hide
            jglick Jesse Glick added a comment - - edited

            Caused a regression: JENKINS-48061

            Show
            jglick Jesse Glick added a comment - - edited Caused a regression:  JENKINS-48061
            jglick Jesse Glick made changes -
            Remote Link This issue links to "PR 557 (Web Link)" [ 18299 ]
            jglick Jesse Glick made changes -
            Link This issue is blocked by JENKINS-48061 [ JENKINS-48061 ]
            jglick Jesse Glick made changes -
            Remote Link This issue links to "PR 557 (Web Link)" [ 18299 ]
            markewaite Mark Waite made changes -
            Status Resolved [ 5 ] Closed [ 6 ]

              People

              • Assignee:
                stephenc Stephen Connolly
                Reporter:
                markewaite Mark Waite
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: