我正在尝试使用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代理吗?
如果是,如何预防?
或者,还有其他我想念的东西吗?
答案 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:80
(MASTER
计算机代理),SLAVE
计算机中不需要此代理。
所以,我刚刚在Jenkins中将GIT URL添加到No Proxy Host部分(Manage Jenkins -> Manage Plugins -> Advanced -> HTTP Proxy Configuration -> Added GIT URL in No Proxy Host field)
,现在它正常工作。