简体   繁体   English

Jenkins Windows slave:如果作为服务运行,则身份验证失败

[英]Jenkins Windows slave: Authentication failed if running as service

I have a Jenkins slave running on Windows 10 (1607). 我有一个在Windows 10上运行的Jenkins奴隶(1607)。 If I run the slave direct as JNLP this slave can clone from the git repository (authentification with username and password). 如果我直接以JNLP的身份运行slave,那么这个slave可以从git仓库克隆(使用用户名和密码进行身份验证)。

If I start the same slave as a service, git clone fails with Authentication failed for ... . 如果我启动与服务相同的从服务器,则git clone会因Authentication failed for ...

The service is created over the "File" menu of the slave and is running as "Local System Account". 该服务通过从站的“文件”菜单创建,并作为“本地系统帐户”运行。

What's going wrong? 出了什么问题?

Here is the output from Jenins: 以下是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:\Jenkins\workspace\Xamarin\iRec Common\iRecy 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 Files\Git\cmd\git.exe init c:\Jenkins\workspace\Xamarin\iRec Common\iRecy Common CI # timeout=10
00:00:00.252 Fetching upstream changes from http://git-server/MyGroup/test-project
00:00:00.255  > C:\Program Files\Git\cmd\git.exe --version # timeout=10
00:00:00.351  > C:\Program Files\Git\cmd\git.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 Files\Git\cmd\git.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

Check how your service is started: if it uses the Local System account , it would not have the same %USERPROFILE% and would not benefit from the same git configuration (usually stored in %USERPROFILE%\\.gitconfig ) 检查服务的启动方式:如果它使用本地系统帐户 ,它将不具有相同的%USERPROFILE% ,并且不会从相同的git配置中受益(通常存储在%USERPROFILE%\\.gitconfig

I usually create my service using a user account: 我通常使用用户帐户创建我的服务:

sc create JenkinsSlave binPath= d:\Jenkins_Slave\jenkins-slave.exe DisplayName= "Jenkins Slave xxx for https://<url>/jenkins" start= auto obj= DOMAIN\aUSER password= <password>

Note the space after obj= and password= . 注意obj=password=之后的空格。

Note that is was not working with a Local System account because of a Windows Credential issue, as illustrated in JENKINS-34082 . 请注意,由于Windows凭据问题,因此无法使用本地系统帐户,如JENKINS-34082

I uninstalled "git" in windows slave machine and the install without using "Windows credential manager". 我在Windows slave机器上卸载了“git”并且没有使用“Windows凭证管理器”进行安装。

The OP WeDucer comments : OP WeDucer 评论

Works: The installed credential manager prevented Local System Account from clone. Works:已安装的凭据管理器阻止本地系统帐户克隆。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM