出于某种原因,我在Jenkins中使用复杂的作业名称,并直接从作业名称解析一些作业参数。虽然工作名称往往有点冗长,但过去工作得很好。所有作业都会获取一个repo,其中包含一些脚本,这些脚本将通过GitHub的Jenkins Git Plugin执行。使用私钥,该密钥在Jenkins中存储为凭据。
Jenkins实例是v2.7.4,在Linux上运行(所以PuTTY的plink
很远),Git插件是v3.3.0,git是v1.7.1。我不被允许升级或降级。
但是,当作业名称包含单词plink
(不区分大小写)时,作业将会失败,如下所示:
> git fetch --tags --progress git@github.___/___.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@github.___/___.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:809)
...
at hudson.model.Executor.run(Executor.java:410)
Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress git@github.___/___.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout:
stderr: getaddrinfo: atch: Name or service not known
ssh: connect to host github.___ port 22: Success
fatal: The remote end hung up unexpectedly
不幸的是,作业名称包含每个电子邮件地址的名称部分。直到最近,我们的名字和电子邮件中都有一个名为plink
的开发人员,因此他们的工作经常失败。由于工作原因,我不能在此时修改名称解析的事情,所以问题是:
鉴于我需要作业名称中的字符串plink
,以及带有ssh键的git fetch
,我该如何解决此问题?
答案 0 :(得分:1)
Jenkins git插件不支持命令行git 1.7.1(包含在CentOS 6中)。在某些情况下,它可以工作,但是官方上不提供支持。这是不起作用的情况之一。
命令行git 1.8(默认包含在CentOS 7,Red Hat Enterprise Linux 7,Oracle Linux 7和Scientific Linux 7中)具有相同的问题。有关更多详细信息,请参见JENKINS-62534。
替代方法包括: