为什么Jenkins中的GIT插件无法连接到GIT存储库?

时间:2017-01-19 12:24:40

标签: git github jenkins devops

我正在尝试使用GIT插件Jenkins从GIT中获取代码,并且该作业正在从属机器上运行。

MASTER系统有http_proxy=mycom.domain.com:80

并且在SLAVE系统中没有定义http_proxy

每当我在SLAVE机器上进行本地git clone时,它都能完美运行,但是从詹金斯那里我还没有成功。

抛出以下错误:

Building remotely on SLAVE in workspace /data/test
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url https://github.domain.com/Project-Digital/Project-eCommerce.git # timeout=10
Fetching upstream changes from https://github.domain.com/Project-Digital/Project-eCommerce.git
 > /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials 
Setting http proxy: mycom.domain.com:80
 > /usr/bin/git fetch --tags --progress https://github.domain.com/Project-Digital/Project-eCommerce.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from https://github.domain.com/Project-Digital/Project-eCommerce.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:803)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1063)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1094)
    at hudson.scm.SCM.checkout(SCM.java:495)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1278)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
    at hudson.model.Run.execute(Run.java:1728)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:404)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress https://github.domain.com/Project-Digital/Project-eCommerce.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: error: Failed connect to github.build.ge.com:80; Operation now in progress while accessing https://github.domain.com/Project-Digital/Project-eCommerce.git/info/refs

是因为MASTER系统试图设置SLAVE系统中不存在的http代理吗?

如果是,如何预防?

或者,还有其他我想念的东西吗?

3 个答案:

答案 0 :(得分:2)

今天我也用git存储库设置了jenkins,为我工作,希望这有帮助,

要将git与jenkins连接,请执行以下步骤:

第1步。成功安装插件后,创建一个像这样的新工作:

1.创建工作名称

2.检查Build a maven软件项目的单选按钮

3.点击确定

第2步。现在检查Git的单选按钮,输入你的git存储库的uri。

第3步。如果你会看到错误

无法连接到存储库:命令“git ls-remote -h git@example.git HEAD”返回状态码128: 标准输出: stderr:致命:'git@example.git'似乎不是git存储库 致命:远程端意外挂断

您必须进行更多配置:

1.转到终端

2.运行此命令: sudo visudo

3.在此文件中添加%jenkins ALL = NOPASSWD:ALL,其中定义了sudo previlage。并关闭文件。

4.登录jenkins用户通过命令: sudo su jenkins

5.在jenkins主目录中创建一个.ssh目录。

6.像这样创建公钥私钥对。

生成SSH密钥:

1:检查SSH密钥

首先,我们需要检查您计算机上的现有ssh密钥。打开终端并运行:

cd~ / .ssh 检查用户目录中是否有名为“.ssh”的目录

如果显示“没有此类文件或目录”,请转到步骤2.否则,您已经拥有现有的密钥对,并且可以跳到第3步。

2:生成新的SSH密钥

要生成新的SSH密钥,请输入以下代码。我们需要默认设置,因此当要求输入要保存密钥的文件时,只需按Enter键。

ssh-keygen -t rsa -C“your_email@example.com”

使用提供的电子邮件作为标签生成公共/私有rsa密钥对,创建新的ssh密钥。输入要保存密钥的文件(/home/you/.ssh/id_rsa): 现在你需要输入密码或file.press输入而不写任何东西。

哪个应该给你这样的东西:

您的身份证明已保存在 /home/you/.ssh/id_rsa 中。

您的公钥已保存在 /home/you/.ssh/id_rsa.pub。密钥指纹为:

01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

3:将您的SSH密钥添加到GitHub

转到您的帐户设置

4:在“源管理”标记下,

       Build Triggers- Build whenever a SNAPSHOT dependency is built
       Root POM-  /var/lib/jenkins/jobs/ProjectName/workspace/ProjectName/pom.xml

在Execute Shell标记下,您可以执行脚本。

最后点击立即构建以创建构建,打开控制台以检查状态。

答案 1 :(得分:1)

在拉动项目之前,尝试在全局配置中设置HTTP代理:

$> git config --global http.proxy http://mycom.example.com:80

如果您需要为代理提供用户名和密码,可以使用:

$> git config --global http.proxy http://example.com\\<yourUsername>:<yourPassword>@<yourProxyServer>:80

答案 2 :(得分:0)

原来这是代理问题。

使用Jenkins从GIT中提取代码时,将http_proxy设置为mycom.domain.com:80MASTER计算机代理),SLAVE计算机中不需要此代理。

所以,我刚刚在Jenkins中将GIT URL添加到No Proxy Host部分(Manage Jenkins -> Manage Plugins -> Advanced -> HTTP Proxy Configuration -> Added GIT URL in No Proxy Host field),现在它正常工作。