我已经设置了一个运行jenkins的CI服务器和一个带有我们生产环境副本的slave。我遇到了一个讨厌的小问题:Jenkins显然在奴隶上运行git clone
,这意味着每个奴隶都应该将它的公钥添加到GitHub。
对我而言,这听起来像一个非常奇怪的架构设计。 我更喜欢主服务器(拥有我的所有凭据)到clone
/ checkout
并将工作区复制到奴隶。但经过一些谷歌搜索我还没找到一种方法来做到这一点。我找到了Copy to slave plugin,但这并不能阻止奴隶在git clone
上失败。
我希望有人知道实现这一目标的方法,因为为每个奴隶设置GitHub公钥都听起来很荒谬。
答案 0 :(得分:5)
詹金斯显然在奴隶上运行git clone,这意味着每个奴隶都应该将它的公钥添加到GitHub中。
为什么不使用一个 deployment key (供所有Jenkins代理商使用)来访问您的回购邮件?
部署密钥是存储在服务器上的SSH密钥,用于授予对GitHub上单个存储库的访问权限。
此密钥直接附加到存储库而不是用户帐户。赞成
- 有权访问服务器的任何人都有权部署存储库
- 用户无需更改其本地SSH设置
缺点
- 部署密钥只授予对单个存储库的访问权限,更复杂的项目可能有许多存储库可以提取到同一个服务器
- 密钥具有对存储库的完全读/写访问权限
- 部署密钥通常不受密码保护,如果服务器受到损害,密钥可以轻松访问
另一种方法是使用Credentials Jenkins plugin(在February 2012中初始化),这允许在Jenkins master中存储凭据。
管理每个凭据的单点。在一个地方改变它,你就完成了。
从版本1.5开始,该插件现在支持将凭据分类到不同的“域”,以允许插件将凭据的选择限制为仅适用于那些凭据。
当插件要求提供凭据列表时,它可以添加一些关于凭据将在何处以及如何使用的规范。
凭据域配置示例:
答案 1 :(得分:4)
最近的Jenkins版本通过在master上集中凭据来解决这个问题。