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

Checkout scm hangs or fails on private LFS repos without GitLFSPull extension

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • Jenkins 2.222.3
      Git plugin 4.2.1
      Git Client 3.0.0
      Git cli 2.26.2
      git-lfs/2.10.0 (GitHub; linux amd64; go 1.12.7; git a526ba6b)

      Checkout scm will fail or hang in repositories that

      • Contain LFS files
      • Are non-public

       

      The following repository will exhibit the issue when made private: https://github.com/res0nance/git-lfs-test

      With the error:

       > git config core.sparsecheckout # timeout=10
       > git checkout -f c146a3ca4fb0380e0e336a850a5a695b669cac3d # timeout=10
      
      GitHub has been notified of this commit’s build result
      
      hudson.plugins.git.GitException: Command "git checkout -f c146a3ca4fb0380e0e336a850a5a695b669cac3d" returned status code 128:
      stdout: 
      stderr: Downloading AutoCAD_LT_2018_English_Win_32_64bit_wi_en-us_Setup_webinstall.exe (378 KB)
      Error downloading object: AutoCAD_LT_2018_English_Win_32_64bit_wi_en-us_Setup_webinstall.exe (4e7d17e): Smudge error: Error downloading AutoCAD_LT_2018_English_Win_32_64bit_wi_en-us_Setup_webinstall.exe (4e7d17e18251183ddb766620b7e1f04cf9a979184e88ddc0dba8d288c1dc3522): batch response: Bad credentials
      
      Errors logged to /mnt/data/jenkins/workspace/s0nance_git-lfs-test-priv_master/.git/lfs/logs/20200521T063801.838088036.log
      Use `git lfs logs last` to view the log.
      error: external filter 'git-lfs filter-process' failed
      fatal: AutoCAD_LT_2018_English_Win_32_64bit_wi_en-us_Setup_webinstall.exe: smudge filter lfs failed
      
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2372)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$1000(CliGitAPIImpl.java:80)
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:2683)
      Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to EC2 (common-env) - ForgeCI-Linux-Agent (i-0bb64dada62d9c488)
      		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1788)
      		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
      		at hudson.remoting.Channel.call(Channel.java:998)
      		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:146)
      		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.lang.reflect.Method.invoke(Method.java:498)
      		at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:132)
      		at com.sun.proxy.$Proxy120.execute(Unknown Source)
      		at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1217)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:124)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:93)
      		at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:80)
      		at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      Caused: hudson.plugins.git.GitException: Could not checkout c146a3ca4fb0380e0e336a850a5a695b669cac3d
      	at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:2707)
      	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:161)
      	at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$GitCommandMasterToSlaveCallable.call(RemoteGitImpl.java:154)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:369)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Finished: FAILURE
      

       

      The checkout scm command seems to fail because of the lack of credentials when running the checkout with the smudge filter enabled. https://github.com/jenkinsci/git-client-plugin/blob/eeec334af0b6447f3db9fb88d55728911a092d73/src/main/java/org/jenkinsci/plugins/gitclient/CliGitAPIImpl.java#L2735

       

      I confirmed it manually by recompiling the git-client plugin so that it disables the smudge filter unconditionally that this results in checkout completing but the LFS file being in its "pointer" state a 131 byte file.

       

      This is not an issue on a significantly older version git 2.14.

            Unassigned Unassigned
            raihaan Raihaan Shouhell
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: