我有一个Jenkins slave运行在Windows 10(1607)上。如果我以JNLP的身份直接运行从属服务器,那么从属服务器可以从git存储库进行克隆(使用用户名和密码进行身份验证)。
如果我启动相同的从服务器作为服务,git克隆失败与Authentication failed for ...
。
该服务在从属服务器的"File"菜单上创建,并作为"本地系统帐户"运行。
怎么了?
下面是Jenins的输出:
00:00:00.003 Started by user <commit-user>
00:00:00.005 ln -s builds/lastSuccessfulBuild /var/jenkins_home/jobs/Xamarin/jobs/MyProject/jobs/CIBuild/lastSuccessful failed: 95 Not supported
00:00:00.005 ln -s builds/lastStableBuild /var/jenkins_home/jobs/Xamarin/jobs/MyProject/jobs/CIBuild/lastStable failed: 95 Not supported
00:00:00.005 Building remotely on Win10Xamarin (Win10 Xamarin Git NetCore) in workspace c:JenkinsworkspaceXamariniRec CommoniRecy Common CI
00:00:00.025 Cloning the remote Git repository
00:00:00.031 Cloning repository http://git-server/MyGroup/test-project
00:00:00.032 > C:Program FilesGitcmdgit.exe init c:JenkinsworkspaceXamariniRec CommoniRecy Common CI # timeout=10
00:00:00.252 Fetching upstream changes from http://git-server/MyGroup/test-project
00:00:00.255 > C:Program FilesGitcmdgit.exe --version # timeout=10
00:00:00.351 > C:Program FilesGitcmdgit.exe -c core.askpass=true fetch --tags --progress http://git-server/MyGroup/test-project +refs/heads/*:refs/remotes/origin/*
00:00:01.148 ERROR: Error cloning remote repo 'origin'
00:00:01.149 hudson.plugins.git.GitException: Command "C:Program FilesGitcmdgit.exe -c core.askpass=true fetch --tags --progress http://git-server/MyGroup/test-project +refs/heads/*:refs/remotes/origin/*" returned status code 128:
00:00:01.149 stdout:
00:00:01.149 stderr: fatal: Authentication failed for 'http://git-server/MyGroup/test-project/'
00:00:01.149
00:00:01.149 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1740)
00:00:01.149 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1476)
00:00:01.149 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:63)
00:00:01.149 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:314)
00:00:01.149 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$2.execute(CliGitAPIImpl.java:506)
00:00:01.149 at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:152)
00:00:01.149 at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler$1.call(RemoteGitImpl.java:145)
00:00:01.149 at hudson.remoting.UserRequest.perform(UserRequest.java:153)
00:00:01.149 at hudson.remoting.UserRequest.perform(UserRequest.java:50)
00:00:01.149 at hudson.remoting.Request$2.run(Request.java:332)
00:00:01.149 at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
00:00:01.149 at java.util.concurrent.FutureTask.run(Unknown Source)
00:00:01.150 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
00:00:01.150 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
00:00:01.150 at hudson.remoting.Engine$1$1.run(Engine.java:85)
00:00:01.150 at java.lang.Thread.run(Unknown Source)
00:00:01.150 at ......remote call to Win10Xamarin(Native Method)
00:00:01.150 at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
00:00:01.150 at hudson.remoting.UserResponse.retrieve(UserRequest.java:253)
00:00:01.150 at hudson.remoting.Channel.call(Channel.java:781)
00:00:01.150 at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.execute(RemoteGitImpl.java:145)
00:00:01.150 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
00:00:01.150 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
00:00:01.150 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
00:00:01.150 at java.lang.reflect.Method.invoke(Method.java:498)
00:00:01.153 at org.jenkinsci.plugins.gitclient.RemoteGitImpl$CommandInvocationHandler.invoke(RemoteGitImpl.java:131)
00:00:01.153 at com.sun.proxy.$Proxy65.execute(Unknown Source)
00:00:01.153 at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1046)
00:00:01.153 at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1086)
00:00:01.153 at hudson.scm.SCM.checkout(SCM.java:495)
00:00:01.153 at hudson.model.AbstractProject.checkout(AbstractProject.java:1269)
00:00:01.153 at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
00:00:01.153 at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
00:00:01.153 at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
00:00:01.153 at hudson.model.Run.execute(Run.java:1741)
00:00:01.153 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
00:00:01.153 at hudson.model.ResourceController.execute(ResourceController.java:98)
00:00:01.153 at hudson.model.Executor.run(Executor.java:410)
00:00:01.153 ERROR: null
00:00:01.153 Skipped archiving because build is not successful
00:00:01.154 Recording NUnit tests results
00:00:01.160 FATAL: No NUnit test report files were found. Configuration error?
00:00:01.165 Build step 'Publish NUnit test result report' marked build as failure
00:00:01.180 Finished: FAILURE
检查你的服务是如何启动的:如果它使用本地系统帐户,它将没有相同的%USERPROFILE%
,也不会受益于相同的git配置(通常存储在%USERPROFILE%.gitconfig
中)
我通常使用一个用户帐户创建我的服务:
sc create JenkinsSlave binPath= d:Jenkins_Slavejenkins-slave.exe DisplayName= "Jenkins Slave xxx for https://<url>/jenkins" start= auto obj= DOMAINaUSER password= <password>
注意obj=
和password=
后面有空格。
请注意,由于Windows凭据问题,它不能与本地系统帐户一起工作,如JENKINS-34082
所示。
我在windows从机上卸载了"git",并且没有使用"windows凭证管理器"。
OP WeDucer评论:
工作:已安装的凭据管理器阻止克隆本地系统帐户。