-
Bug
-
Resolution: Unresolved
-
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.
- links to