Jenkins Windows Slave没有为git使用正确的凭据

时间:2018-10-04 15:35:25

标签: git jenkins

我有一个使用Windows从站构建UWP应用程序的Jenkins主站(ubuntu)。当它尝试运行git fetch时,出现以下错误:-

git fetch --tags --progress git@gitlab.com:user/repo.git +refs/heads/*:refs/remotes/origin/*
23:24:08 ERROR: Error fetching remote repo 'origin'
23:24:08 hudson.plugins.git.GitException: Failed to fetch from git@gitlab.com:user/repo.git
23:24:08    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:803)
23:24:08    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1063)
23:24:08    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1094)
23:24:08    at hudson.scm.SCM.checkout(SCM.java:495)
23:24:08    at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
23:24:08    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:560)
23:24:08    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
23:24:08    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)
23:24:08    at hudson.model.Run.execute(Run.java:1735)
23:24:08    at hudson.matrix.MatrixRun.run(MatrixRun.java:153)
23:24:08    at hudson.model.ResourceController.execute(ResourceController.java:97)
23:24:08    at hudson.model.Executor.run(Executor.java:405)
23:24:08 Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress git@gitlab.com:user/repo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
23:24:08 stdout: 
23:24:08 stderr: jenkins_user@gitlab.com: Permission denied (publickey).
23:24:08 fatal: Could not read from remote repository.

似乎使用了错误的电子邮件地址来获取存储库。应该是jenkins_user@domain.com,而不是@ gitlab.com,但是即使我执行git config --global user.email jenkins_user@domain.com,它仍然会给出相同的错误。

1 个答案:

答案 0 :(得分:0)

这可能与本地存储库中的+ java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) [Pipeline] sh [myProject] Running shell script + mvn -v Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401) at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254) at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144) 配置无关。

将jenkins从属服务器安装为Windows服务时(以确保即使没有人登录,代理也可以运行),运行jenkins二进制文件的用户是本地系统帐户。您必须创建一个SSH公/私钥对,并将其放在计算机上的正确文件夹下:

user.email

您还需要复制一个正确的C:\Windows\system32\config\systemprofile\.ssh 文件,以确保第一个known_hosts可以正常工作而无需在命令行上键入git pull(在jenkins作业中这是不可能的)。

警告::大多数情况下,Windows Update执行系统升级时,将清理此文件夹,并且您丢失了密钥。您必须将文件保存在其他位置,以确保升级后可以将其还原。

有关其他信息,请参见this post,或在您首选的搜索引擎上搜索“ ssh key本地系统帐户”。