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

Linux: if there is a recursive directory within the git repo you're building, the initial checkout will fail badly

XMLWordPrintable

      If a recursive symlink is present in one's git repo the new git/git-client plugins will fail badly as shown below. While having such a symlink may not be ideal, until git 1.3.0/ git-client 1.0.4 Jenkins did not have problems with it (nor have I had any other git client or tool fail because of this symlink).

      This appears to be specifically related to changes in the new git 1.3.0 plugin or its dependency git-client 1.0.4. Downgrading to the git 1.2.0 plugin and manually downgrading to the git-client 1.0.3 plugin was enough to remove this issue entirely. The problems seems specific to jgit.

      Note that I'm using Jenkins 1.505 and all other plugins are up-to-date.

      The details below contrast the working and broken builds (the only difference is the versions of the git plugins and their effects).

      ----------------------------------------------------------------------------
      A normal build (when using git 1.2.0 and git-client 1.0.3):
      ----------------------------------------------------------------------------
      Retriggered by user myself for Gerrit: http://gerritserver/710
      Building on master in workspace /var/lib/jenkins/jobs/puppet/workspace
      Checkout:workspace / /var/lib/jenkins/jobs/puppet/workspace - hudson.remoting.LocalChannel@1307e9af
      Using strategy: Gerrit Trigger
      Last Built Revision: Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      Using shallow clone
      Wiping out workspace first.
      Cloning the remote Git repository
      Cloning repository git://gitserver/puppet
      git --version
      git version 1.7.9.5
      Fetching upstream changes from origin
      Commencing build of Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      Checking out Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      [workspace] $ /bin/bash -ex /tmp/hudson3918244826320546803.sh
      [--== ...and so on to a successful build ==--]

      ----------------------------------------------------------------------------
      Build break (when using git 1.3.0 and git-client 1.0.4):
      ----------------------------------------------------------------------------
      Retriggered by user myself for Gerrit: http://gerritserver/710
      Building on master in workspace /var/lib/jenkins/jobs/puppet/workspace
      Checkout:workspace / /var/lib/jenkins/jobs/puppet/workspace - hudson.remoting.LocalChannel@6f0bc962
      Using strategy: Gerrit Trigger
      Last Built Revision: Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      Using shallow clone
      Wiping out workspace first.
      Cloning the remote Git repository
      Cloning repository git://gitserver/puppet
      git --version
      git version 1.7.9.5
      Commencing build of Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      Checking out Revision b3f2bd79784969bd18866ff666f0ab46136ff196 (mybranch)
      FATAL: Could not checkout b3f2bd79784969bd18866ff666f0ab46136ff196
      hudson.plugins.git.GitException: Could not checkout b3f2bd79784969bd18866ff666f0ab46136ff196
      at org.jenkinsci.plugins.gitclient.JGitAPIImpl.checkout(JGitAPIImpl.java:68)
      at hudson.plugins.git.GitAPI.checkout(GitAPI.java:208)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1273)
      at hudson.plugins.git.GitSCM.access$1100(GitSCM.java:57)
      at hudson.plugins.git.GitSCM$4.invoke(GitSCM.java:1232)
      at hudson.plugins.git.GitSCM$4.invoke(GitSCM.java:1208)
      at hudson.FilePath.act(FilePath.java:865)
      at hudson.FilePath.act(FilePath.java:838)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1208)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1353)
      at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:683)
      at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:588)
      at hudson.model.Run.execute(Run.java:1567)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:237)
      Caused by: org.eclipse.jgit.api.errors.CheckoutConflictException: Checkout conflict with files:
      apt/spec/fixtures/modules/apt <------ [ this is a symlink to ../../.. ]
      apt/spec/fixtures/modules/apt/.gitignore
      apt/spec/fixtures/modules/apt/CHANGELOG
      apt/spec/fixtures/modules/apt/manifests
      apt/spec/fixtures/modules/apt/manifests/init.pp
      apt/spec/fixtures/modules/apt/spec
      apt/spec/fixtures/modules/apt/spec/fixtures
      apt/spec/fixtures/modules/apt/spec/fixtures/manifests
      apt/spec/fixtures/modules/apt/spec/fixtures/manifests/site.pp
      apt/spec/fixtures/modules/apt/spec/fixtures/modules
      apt/spec/fixtures/modules/apt/spec/fixtures/modules/apt <--------- [ and so on... ]
      apt/spec/fixtures/modules/apt/spec/fixtures/modules/apt/.gitignore
      apt/spec/fixtures/modules/apt/spec/fixtures/modules/apt/CHANGELOG

      [--== trimmed ~9 MB of recursive output ==--]

      apt/spec/fixtures/modules/apt/tests/source.pp
      at org.eclipse.jgit.dircache.DirCacheCheckout.doCheckout(DirCacheCheckout.java:411)
      at org.eclipse.jgit.dircache.DirCacheCheckout.checkout(DirCacheCheckout.java:391)
      at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:240)
      ... 17 more

      [--== build failed ==--]

            ndeloof Nicolas De Loof
            martymacgyver Martin Falatic
            Votes:
            2 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: