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

Authentication Error with GIT Client version 2.0.0

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • git-client-plugin
    • None
    • Jenkins Master (2.7.4) is on Linux Server, Nodes are on Windows Server 2012 R2.

      I recently upgraded my Git Client plugin to 2.0.0 from 1.19.7. Immediately after jobs began failing due to an authentication issue. I rolled the plugin back to 1.19.7 and the jobs started passing. This is with TFS GIT.

      Cloning the remote Git repository
      Cloning repository https://REMOVED/_git/AppointmentsTribeTestAutomation
      > C:\Program Files\Git\bin\git.exe init c:\Jenkins\workspace\Appointments_Test_ChromeNFW # timeout=10
      Fetching upstream changes from https://REMOVED/_git/AppointmentsTribeTestAutomation
      > C:\Program Files\Git\bin\git.exe --version # timeout=10
      using GIT_ASKPASS to set credentials Credentials used for Version Control connections.
      > C:\Program Files\Git\bin\git.exe fetch --tags --progress https:/REMOVED/_git/AppointmentsTribeTestAutomation +refs/heads/:refs/remotes/origin/
      ERROR: Error cloning remote repo 'origin'
      hudson.plugins.git.GitException: Command "C:\Program Files\Git\bin\git.exe fetch --tags --progress https://REMOVED/_git/AppointmentsTribeTestAutomation +refs/heads/:refs/remotes/origin/" returned status code 128:
      stdout:
      stderr: fatal: Authentication failed for 'https://REMOVED/_git/AppointmentsTribeTestAutomation/'

      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1752)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1495)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:64)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:315)
      at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:507)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:152)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:145)
      at hudson.remoting.UserRequest.perform(UserRequest.java:120)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:332)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1$1.run(Engine.java:85)
      at java.lang.Thread.run(Unknown Source)
      at ......remote call to REMOVED(Native Method)
      at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
      at hudson.remoting.UserResponse.retrieve(UserRequest.java:253)
      at hudson.remoting.Channel.call(Channel.java:781)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:145)
      at sun.reflect.GeneratedMethodAccessor692.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:131)
      at com.sun.proxy.$Proxy75.execute(Unknown Source)
      at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1042)
      at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1082)
      at hudson.scm.SCM.checkout(SCM.java:495)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1269)
      at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
      at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
      at hudson.model.Run.execute(Run.java:1741)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      at hudson.model.ResourceController.execute(ResourceController.java:98)
      at hudson.model.Executor.run(Executor.java:410)
      ERROR: null

          [JENKINS-38179] Authentication Error with GIT Client version 2.0.0

          so your recommendation solved half my problems.

          i am now able to successfully run a pipeline script from inside a pipeline job. I am still getting almost exactly the same error when trying to do SCM based scripts though... and as you might imagine this is where the real value comes (this is the mic-drop of features....)

          At least we can see it TRYING to work this time:

          Started by user admin
          Cloning the remote Git repository
          Cloning repository https://<secretrepo>.git
          > git init /var/lib/jenkins/workspace/secretproject@script # timeout=10
          Fetching upstream changes from https://<secretrepo>.git
          > git --version # timeout=10
          using .gitcredentials to set credentials
          > git config --local credential.username s.secretgroups.cm # timeout=10
          > git config --local credential.helper store --file=/tmp/git3075561283563803618.credentials # timeout=10
          > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/:refs/remotes/origin/
          > git config --local --remove-section credential # timeout=10
          > git config remote.origin.url https://<secretrepo>.git # timeout=10
          > git config --add remote.origin.fetch +refs/heads/:refs/remotes/origin/ # timeout=10
          > git config remote.origin.url https://<secretrepo>.git # timeout=10
          Fetching upstream changes from https://<secretrepo>.git
          using .gitcredentials to set credentials
          > git config --local credential.username s.platformgrp.cm # timeout=10
          > git config --local credential.helper store --file=/tmp/git2484614980651109123.credentials # timeout=10
          > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/:refs/remotes/origin/
          > git config --local --remove-section credential # timeout=10
          > git rev-parse refs/remotes/origin/master^

          {commit} # timeout=10
          > git rev-parse refs/remotes/origin/origin/master^{commit}

          # timeout=10
          Checking out Revision 42d3648ba16210a4cf2728788ab1614b6721a07b (refs/remotes/origin/master)
          > git config core.sparsecheckout # timeout=10
          > git checkout -f 42d3648ba16210a4cf2728788ab1614b6721a07b
          First time build. Skipping changelog.
          [Pipeline] node
          Running on master in /var/lib/jenkins/workspace/secretproject
          [Pipeline] {
          [Pipeline] echo
          start pipeline for my_build app
          [Pipeline] stage
          [Pipeline] { (Preparation)
          [Pipeline] git
          Cloning the remote Git repository
          Cloning repository https://<secretrepo>.git
          > git init /var/lib/jenkins/workspace/secretproject # timeout=10
          Fetching upstream changes from https://<secretrepo>.git
          > git --version # timeout=10
          > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/:refs/remotes/origin/
          ERROR: Error cloning remote repo 'origin'
          hudson.plugins.git.GitException: Command "git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/:refs/remotes/origin/" returned status code 128:
          stdout:
          stderr: fatal: Authentication failed for 'https://<secretrepo>.git/'

          Benjamin Goldman added a comment - so your recommendation solved half my problems. i am now able to successfully run a pipeline script from inside a pipeline job. I am still getting almost exactly the same error when trying to do SCM based scripts though... and as you might imagine this is where the real value comes (this is the mic-drop of features....) At least we can see it TRYING to work this time: Started by user admin Cloning the remote Git repository Cloning repository https://<secretrepo>.git > git init /var/lib/jenkins/workspace/secretproject@script # timeout=10 Fetching upstream changes from https://<secretrepo>.git > git --version # timeout=10 using .gitcredentials to set credentials > git config --local credential.username s.secretgroups.cm # timeout=10 > git config --local credential.helper store --file=/tmp/git3075561283563803618.credentials # timeout=10 > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/ :refs/remotes/origin/ > git config --local --remove-section credential # timeout=10 > git config remote.origin.url https://<secretrepo>.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/ :refs/remotes/origin/ # timeout=10 > git config remote.origin.url https://<secretrepo>.git # timeout=10 Fetching upstream changes from https://<secretrepo>.git using .gitcredentials to set credentials > git config --local credential.username s.platformgrp.cm # timeout=10 > git config --local credential.helper store --file=/tmp/git2484614980651109123.credentials # timeout=10 > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/ :refs/remotes/origin/ > git config --local --remove-section credential # timeout=10 > git rev-parse refs/remotes/origin/master^ {commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 42d3648ba16210a4cf2728788ab1614b6721a07b (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 42d3648ba16210a4cf2728788ab1614b6721a07b First time build. Skipping changelog. [Pipeline] node Running on master in /var/lib/jenkins/workspace/secretproject [Pipeline] { [Pipeline] echo start pipeline for my_build app [Pipeline] stage [Pipeline] { (Preparation) [Pipeline] git Cloning the remote Git repository Cloning repository https://<secretrepo>.git > git init /var/lib/jenkins/workspace/secretproject # timeout=10 Fetching upstream changes from https://<secretrepo>.git > git --version # timeout=10 > git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/ :refs/remotes/origin/ ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Command "git -c core.askpass=true fetch --tags --progress https://<secretrepo>.git +refs/heads/ :refs/remotes/origin/ " returned status code 128: stdout: stderr: fatal: Authentication failed for 'https://<secretrepo>.git/'

          your workaround worked.

          Thanks.

          Benjamin Goldman added a comment - your workaround worked. Thanks.

          Mark Waite added a comment -

          inebrious can you describe further what work around worked?

          Mark Waite added a comment - inebrious can you describe further what work around worked?

          Yes - we dropped back to git client plugin 1.21.0 and git plugin 2.6.0.

          I did nothing else and all of our problems went away.

          Thanks a ton.

          Benjamin Goldman added a comment - Yes - we dropped back to git client plugin 1.21.0 and git plugin 2.6.0. I did nothing else and all of our problems went away. Thanks a ton.

          the SECOND error i pasted above was NOT due to the same problem but due to the fact that I spun up yet another box did not consider how I was managing credentials.

          Benjamin Goldman added a comment - the SECOND error i pasted above was NOT due to the same problem but due to the fact that I spun up yet another box did not consider how I was managing credentials.

          markewaite i will have some time late tonight or tomorrow to go back and VERIFY that the change you recommended fixed things and output the various versions of stuff involved (jenkins, os, git, plugins, git server etc)

          Ill do this by reproducing the error in a new build, and verifying that the only thing done to fix it is the downgrade.

          after i posted the previous comments it was pointed out to me that I should be super thorough here so you guys can benefit from our problem.. so ill do just that.

          Benjamin Goldman added a comment - markewaite i will have some time late tonight or tomorrow to go back and VERIFY that the change you recommended fixed things and output the various versions of stuff involved (jenkins, os, git, plugins, git server etc) Ill do this by reproducing the error in a new build, and verifying that the only thing done to fix it is the downgrade. after i posted the previous comments it was pointed out to me that I should be super thorough here so you guys can benefit from our problem.. so ill do just that.

          markewaite it was a ID10-T error or PEBCAK.

          Not an instance of the bug. I cannot reproduce 4 times in a row now rebuilding entirely on my own from scripts.

          Sorry

          Benjamin Goldman added a comment - markewaite it was a ID10-T error or PEBCAK. Not an instance of the bug. I cannot reproduce 4 times in a row now rebuilding entirely on my own from scripts. Sorry

          Code changed in jenkins
          User: Mark Waite
          Path:
          src/main/java/org/jenkinsci/plugins/gitclient/CliGitAPIImpl.java
          src/test/java/org/jenkinsci/plugins/gitclient/CliGitAPIImplAuthTest.java
          http://jenkins-ci.org/commit/git-client-plugin/f7b7cb995f5aaf22dcc49ccc48b980e5d1ce7ecc
          Log:
          Test JENKINS-40116, JENKINS-38194, JENKINS-38179 & JENKINS-38138

          Confirm that characters which Windows requires be escaped in a batch
          file can be used as characters in a git password (as used through https
          with a username / password combination).

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Mark Waite Path: src/main/java/org/jenkinsci/plugins/gitclient/CliGitAPIImpl.java src/test/java/org/jenkinsci/plugins/gitclient/CliGitAPIImplAuthTest.java http://jenkins-ci.org/commit/git-client-plugin/f7b7cb995f5aaf22dcc49ccc48b980e5d1ce7ecc Log: Test JENKINS-40116 , JENKINS-38194 , JENKINS-38179 & JENKINS-38138 Confirm that characters which Windows requires be escaped in a batch file can be used as characters in a git password (as used through https with a username / password combination).

          Mark Waite added a comment -

          If you'd like to test a prototype build, for a short time it will be available from the ci.jenkins.io server. Upload it manually, restart your Jenkins server, and see if it helps in your case.

          Mark Waite added a comment - If you'd like to test a prototype build, for a short time it will be available from the ci.jenkins.io server. Upload it manually, restart your Jenkins server, and see if it helps in your case.

          Mark Waite added a comment -

          Believed to be fixed in git client plugin 2.2.1 16 Jan 2016

          Mark Waite added a comment - Believed to be fixed in git client plugin 2.2.1 16 Jan 2016

            markewaite Mark Waite
            cmietzner Cole Mietzner
            Votes:
            4 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: