詹金斯挂在“从原点获取上游变化”

时间:2013-03-29 17:40:47

标签: git ssh jenkins

我正在尝试在Windows Server 2012计算机上设置Jenkins,而且我遇到了很多困难。

我做过的事情:

  • 创建了无密码id_rsaid_rsa.pub
  • 使用known_hosts为bitbucket.org创建了一个ssh.exe -T bitbucket.org文件,并接受添加主机。
  • E:添加到系统范围的HOME变量
  • 我已将这些文件添加到C:/Windows/SysWOW64/config/systemprofile/.ssh以及E:/.ssh
  • 我已将公钥与Bitbucket链接为部署密钥。
  • 我已经对我的所有网址,用户名等进行了三重检查。
  • 我甚至手动从存储库中提取以在C:/Program Files (x86)/Jenkins/jobs/MyProject/workspace/
  • 中设置初始基础

然而它仍然挂在

Building in workspace C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace
Checkout:workspace / C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace - hudson.remoting.LocalChannel@13ca972
Using strategy: Default
Fetching changes from 1 remote Git repository
Fetching upstream changes from origin

我已经给了它约20分钟,所以这不是回购问题的速度/大小。如果我取消,这就是返回的内容:

ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Error performing command: C:\Program Files     (x86)\Git\bin\git.exe fetch -t origin +refs/heads/*:refs/remotes/origin/*
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:780)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:739)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.fetch(CliGitAPIImpl.java:160)
at hudson.plugins.git.GitAPI.fetch(GitAPI.java:230)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:793)
at hudson.plugins.git.GitSCM.access$000(GitSCM.java:57)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:976)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
at hudson.FilePath.act(FilePath.java:865)
at hudson.FilePath.act(FilePath.java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575)
at hudson.model.Run.execute(Run.java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:237)
Caused by: java.lang.InterruptedException
at java.lang.ProcessImpl.waitFor(Native Method)
at hudson.Proc$LocalProc.join(Proc.java:319)
at hudson.Launcher$ProcStarter.join(Launcher.java:360)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:769)
... 19 more
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:981)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
at hudson.FilePath.act(FilePath.java:865)
at hudson.FilePath.act(FilePath.java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364)
at     hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575)
at hudson.model.Run.execute(Run.java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:237)

我的灵魂已经到了这里,所以我很感激能得到的所有帮助。 这里有一些选择,我试过没有改进。

Authenticate Jenkins CI for Github private repository

Permission denied (publickey) when setting up Jenkins

Hudson Git Plugin not working on windows

http://computercamp.cdwilson.us/jenkins-git-clone-via-ssh-on-windows-7-x64

8 个答案:

答案 0 :(得分:31)

以下是我修复类似问题的方法:

Msysgit会安装两个git.exe。一个位于C:\Program Files (x86)\Git\bin之下,另一个位于C:\Program Files (x86)\Git\cmd之下。第一个不能与Jenkins一起使用。完成它的工作后它会挂起。第二个完美无缺。

更新您的Jenkins Git设置以指向正确的cmd\git.exe并享受!

答案 1 :(得分:8)

这就是我解决它的方法:

我运行了sysinternals工具psexec来生成一个在LocalSystem帐户下运行的CMD(jenkins服务正在运行的同一帐户)

PSEXEC -i -s -d CMD

在这个cmd提示符中,我从工作空间目录执行了与挂起的GIT.exe进程相同的git命令。例如。

d:\ Programs \ Jenkins \ jobs \ jobname \ workspace> D:\ Programs \ Git \ bin \ git.exe fetch -t ssh + git://gitpub@my.server.com:9360 / data / gitpub /myRepository.git + refs / heads / :refs / remotes / origin /

Et voila:我被提示输入“yes”以将SSH密钥添加到已知主机的已知列表中。

答案 2 :(得分:2)

也可以在“从原点获取上游变化”中体验冻结。

在基于Windows的计算机上运行Jenkins作为服务似乎(根据我的经验)在使用SSL时遇到问题。

解决方法解决方案]

  1. 将您的Jenkins服务改为在本地帐户下运行。
  2. 确保您的本地管理员帐户已配置为使用SSH执行Git交互。
  3. 重新启动Jenkins(details)。
  4. 如果詹金斯没有开始,那么它就会试图从Git中解脱出来。手动杀死git和ssh进程,从Jenkins中删除你的java.exe并手动启动Jenkins服务。
  5. 我选择此解决方案的详细信息]

    我之前已经按照其他步骤设置了授权主机以接受服务器并在服务器上注册Jenkins的密钥以允许连接。我已经确保我可以在我的本地系统帐户(Jenkins服务在其下运行)下成功执行Git操作。但是,取件会冻结。为了检查我的Git和SSL是否配置正确,我甚至去了Jenkins作业目录中最初配置的Git存储库并执行了成功的拉取请求under the local system account。有效;因此键已正确设置。

    我忘了在哪里读到这个,但我听说在本地系统下处理Git / SSH时会出现问题。有了这些知识,我打我的Git的环境,改变了GIT_SSH环境变量来使用plink (用腻子的组合来记住服务器密钥,的puttygen到OpenSSL的密钥转换为腻子键和选美记住我密钥)用于plink。一旦我使用plink,我就没有发现它是一个可用的解决方案。我为了正确使用plink,我还必须在我的本地系统帐户下运行选美,让Jenkins服务正确协商SSH调用。在考虑如何在重新启动时正确设置初始状态之后,我不想将所有这些努力都放在让SSH连接正常工作中。

    相反,我认为在我的本地管理员帐户下运行Jenkins更容易,该帐户也配置为处理Git服务器。无需为本地系统帐户处理已配置的SSH密钥,我的git操作正常。


    请注意,David Gageot的回答可以适用于某些人。我没有必要改变我的任何Git设置,因为当我安装Git时,我选择了Run Git from the Windows Command Prompt选项,它将路径映射到C:\Program Files (x86)\Git\bin\cmd\目录。

答案 3 :(得分:2)

我在Windows上配置jenkins时发现非常有用的另一个链接,特别是在使用MSI安装程序时:http://opensourcetester.co.uk/2013/06/28/jenkins-windows-ssh/

我还没有发现的另一件事是:在连接到Github而不是默认的https时,必须使用SSH URL。希望这会为某人节省时间。

答案 4 :(得分:2)

我在笔记本电脑上遇到了同样的问题而且我能够找到解决方案,但是这实际上只适用于在设置为Windows服务的Tomcat Web容器中运行Jenkins战争。

我只需要将Tomcat服务设置为我的Windows用户而不是本地系统。

答案 5 :(得分:1)

对我来说,它是$ HOME / .ssh文件夹及其内容的权限。在为特定用户组设置可见后,Jenkins能够在重新启动后获取更改。

答案 6 :(得分:0)

Version 2.6.1 of the Git client for Windows解决了Jenkins中的这个问题。现在“从原点获取上游变化”没有延迟。

我在Jenkins中使用git cmd:

  

C:\ Program Files \ Git \ cmd \ git.exe

答案 7 :(得分:0)

我花了几个小时试图解决这个问题,我发现将密码添加到repo URL修复了问题:

https://USERNAME:PASSWORD@bitbucket.org/REPO.git

请注意用户名和密码之间的