在轮询SCM时使用ssh-agent和jenkins

时间:2013-10-04 00:16:31

标签: git jenkins bitbucket jenkins-plugins ssh-agent

我正在使用Jenkins ssh-agent插件,以便为我的构建提供ssh凭据,这完全可以正常工作,但是我将它设置为轮询scm(在本例中为bitbucket git)以检查更改。

当然要访问repo以便轮询更改它还需要那些ssh凭据,我似乎无法在wiki中找到与此相关的任何内容,但必须有办法这样做。

对于他们来说,没有实现它似乎是一件愚蠢的事情,毕竟如果你需要ssh凭证来克隆和构建你还需要他们进行轮询吗?

4 个答案:

答案 0 :(得分:4)

从SSH密钥中删除密码短语是一个不可接受的步骤。

预计jenkins ssh-agent plugin可以解决这个问题,但据我所知,它目前在轮询方面有所不足:

https://issues.jenkins-ci.org/browse/JENKINS-21226

我没有找到一种可行的,安全的方法来实现基于ssh的服务器通信,该通信也涵盖了从Jenkins 1.545开始的轮询。

答案 1 :(得分:2)

假设您的作业在Jenkins上运行。 能够为需要SSL连接的Git仓库进行轮询:

  1. 备份您的私钥。
  2. 使用该解决方案从您的私钥中删除密码:How do I remove the passphrase for the SSH key without having to create a new key?
  3. 将Jenkins服务器上的无密码私钥添加到Jenkins的主目录+ .ssh子文件夹f.e中。对于CEntOS,它位于/var/lib/jenkins/.ssh中。确保只有jenkins用户可以访问该密钥(使用chmod 600,以及chown jenkins:jenkins)。
  4. 在Jenkins的Credential Manager中添加带有用户名的新SSH密钥,并为刚刚配置的私钥f.e指定完整位置。 /var/lib/jenkins/.ssh/id_rsa
  5. 设置您的作业并为Git repo设置和SSH代理插件指定这些凭据。
  6. 完成这些步骤之后,您可以在必要时进行轮询以触发Job,以及从Job本身进行克隆和提取。

答案 2 :(得分:1)

编辑:虽然下面的解决方案显然适用于该JIRA问题的评论者,但它并不适合我。您的里程可能会有所不同。

在作业的“配置”页面的“其他行为”下,添加“使用工作区强制轮询”

似乎自2014年9月开始提供。

通过https://issues.jenkins-ci.org/browse/JENKINS-21226?focusedCommentId=210643&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-210643

答案 3 :(得分:0)

git插件信息本身有很多关于SSH密钥的信息:

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

基本上,您需要在运行jenkins的CI用户上安装密钥。 (未集成SSH凭据插件。)