在 Jenkins 中配置 GitLab 存储库
Posted
技术标签:
【中文标题】在 Jenkins 中配置 GitLab 存储库【英文标题】:Configure GitLab repository in Jenkins 【发布时间】:2013-09-01 08:17:00 【问题描述】:我正在尝试配置 Jenkins(在 Windows Server 2008 上运行)以连接到 GitLab 6.0 存储库(在 linux 机器上)。
从我的本地 Windows 框中,我可以使用 SSH URL 克隆我的 GitLab 服务器上的项目。我已经使用 HTTP URL 获得了some issues,但我确实设法使用 HTTP 连接并使用 Eclipse 插件进行身份验证。
在我尝试过的 Jenkins 项目配置屏幕上:
http://myserver.domain/mygroup/myproject.git
无法连接到存储库:
命令“d:\tools\Git\bin\git.exe ls-remote -h http://myserver.domain/mygroup/myproject.gitHEAD”
返回状态码 128:
stdout: stderr: error: The requested URL returned error: 504 while access
http://myserver.domain/mygroup/myproject.git/info/refs?service=git-upload-pack
致命:HTTP 请求失败
当我在浏览器中尝试此 URL 时,我会弹出身份验证。如果我输入我的电子邮件和密码,我可以成功下载分支和标签列表。
...好的,我应该可以在 URL 中指定用户名和密码,对吧?
http://username:password@myserver.domain/mygroup/myproject.git
...不:
http://username:password@myserver.domain/mygroup/myproject.git/info/refs 无效:这是一个 git 存储库吗?
Windows GUI 使用 SSH 没有任何问题。 ...詹金斯似乎不太喜欢:
git@myserver.domain:mygroup/myproject.git
“请输入 Git 存储库”错误仍然存在,当我尝试保存配置时,我看到以下堆栈跟踪:
Exception: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.git.GitSCM from
"value":"2",
"userRemoteConfigs":
"url":"git@myserver.domain:mygroup/myproject.git",
"name":"origin","refspec":""
,
"branches":"name":"",
"includedRegions":"","excludedRegions":"","excludedUsers":"",
"localBranch":"","relativeTargetDir":"","reference":"",
"scmName":"",
"gitConfigName":"","gitConfigEmail":"",
"pruneBranches":false,"skipTag":false,"clean":false,"remotePoll":false,
"disableSubmodules":false,"recursiveSubmodules":false,
"authorOrCommitter":false,"wipeOutWorkspace":false,"ignoreNotifyCommit":false,
"useShallowClone":false,"":["","0"],
"gitTool":"Default",
"browser":"stapler- class":"hudson.plugins.git.browser.FisheyeGitRepositoryBrowser"
Stacktrace:
javax.servlet.ServletException:
java.lang.RuntimeException: Failed to instantiate class hudson.plugins.git.GitSCM from ...
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:725)
...
Caused by: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.git.GitSCM from ...
at hudson.model.Descriptor.newInstance(Descriptor.java:617)
...
Caused by: java.lang.NullPointerException
at hudson.scm.RepositoryBrowser.normalizeToEndWithSlash(RepositoryBrowser.java:85)
at hudson.plugins.git.browser.FisheyeGitRepositoryBrowser.<init>(FisheyeGitRepositoryBrowser.java:37)
我尝试添加“ssh”协议:
ssh://git@myserver.domain:mygroup/myproject.git
Jenkins 立即做出反应:
stderr: ssh: myserver.domain:mygroup: 没有与名称关联的地址
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
【问题讨论】:
可能 Jenkins 不支持 scp 语法(带 ':')试试 ssh://git@myserver.domain/mygroup/myproject.git 谢谢 VonC - 您能否提交这个作为答案? 【参考方案1】:作为I commented:
也许 Jenkins 不支持 scp 语法(带有 ':
')试试
ssh://git@myserver.domain/mygroup/myproject.git
如“.ssh config with amazon ec2 and git”中所述,使用“:
”通常涉及~/.ssh/config file
,它将“:”前面的字符串解析为服务器、用户、端口和 ssh 密钥。
Jenkins 可能会更好地理解 git@myserver.domain/mygroup/myproject.git
而不是 git@myserver.domain:mygroup/myproject.git
。
【讨论】:
以上是关于在 Jenkins 中配置 GitLab 存储库的主要内容,如果未能解决你的问题,请参考以下文章
将项目从 gitlab 存储库克隆到 Jenkins 时出现问题?
Jenkins:如果我们在两个不同的 GitLab 存储库中有代码,我们可以进行“持续集成”吗?
如何在 Jenkins 中通过 *** 拉取/克隆 git 存储库?