我有一个使用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
,它仍然会给出相同的错误。
答案 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本地系统帐户”。