当作业名称包含“plink”时,Jenkins Git插件会失败吗?

时间:2017-07-03 18:10:37

标签: git jenkins plink

出于某种原因,我在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,我该如何解决此问题?

1 个答案:

答案 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

替代方法包括:

  • Enable JGit在您的Jenkins实例中,并将作业配置为使用JGit而不是CLI git
  • 安装命令行git的较新版本。已知命令行git 2.7及更高版本没有此问题。命令行git 2.0及更高版本可能没有问题
  • 使用http或https而非ssh协议克隆存储库