如何使用Jenkins检出几个私有的Github仓库?

5
我在Jenkins和私有Github仓库上遇到了小问题。要检出私有仓库,通常需要以下两种方法之一:
- 用户在该仓库上的私有SSH密钥。 - 注册为该仓库的“部署密钥”的私有SSH密钥。
部署密钥是为此类交互而设计的。问题是,部署密钥必须在项目间唯一,因此我每次都必须使用不同的密钥。
这意味着我必须为Jenkins用户为每个额外的仓库添加另一个密钥。
这也意味着默认情况下,代理会尝试所有可用的密钥,并且在尝试错误的密钥后可能会断开连接。
Jenkins git插件似乎不允许指向SSH密钥。
在检出之前,Jenkins不允许任何命令行交互,因此我无法使用任何bash技巧来设置正确的密钥。
到目前为止,唯一的解决方案似乎是:
1. 在Github中创建一个“my_jenkins_account”用户。 2. 为该用户添加公钥。 3. 将该帐户添加到我想使用Jenkins检出的仓库中。 4. 将用户的私钥添加到Jenkins用户中。
还有其他替代建议吗?
1个回答

13

这不是一个确切的答案,只是在黑暗中回应一声,让你知道我做的事情基本上是一样的。

  1. 以名为jenkins的用户身份运行Jenkins
  2. sudo作为此用户并创建公共ssh密钥
  3. 创建一个名为myorg-machines的免费GitHub帐户
  4. 将此jenkins用户的公共ssh密钥添加到GitHub上的myorg-machines帐户密钥中。我将此密钥命名为jenkins on server.name.com以保持组织清晰。
  5. 创建一个名为Machines - Pull only的GitHub团队。将myorg-machines GitHub用户添加到该团队,并授予该团队对我的适当私有存储库的拉取访问权限。

我同意它似乎很笨重,但实际上在一年左右的时间里管理起来相当容易。


1
谢谢,我们现在也在运行这个设置。它能用,但感觉还是不对 :( - Marc Seeger
某种程度上,Jenkins服务器充当您的存储库的附加用户。可以这么说,它是在存储库上执行操作的单独实体。将此实体映射到GitHub用户并不完全不合理。(话虽如此,这仍然有点别扭,正如已经说过的那样。但我们必须做我们必须做的事情...) - Cornelius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接