Jenkins master上的Git克隆,复制到slave

时间:2013-11-17 11:44:14

标签: git github jenkins

我已经设置了一个运行jenkins的CI服务器和一个带有我们生产环境副本的slave。我遇到了一个讨厌的小问题:Jenkins显然在奴隶上运行git clone,这意味着每个奴隶都应该将它的公钥添加到GitHub。

对我而言,这听起来像一个非常奇怪的架构设计。 我更喜欢主服务器(拥有我的所有凭据)到clone / checkout并将工作区复制到奴隶。但经过一些谷歌搜索我还没找到一种方法来做到这一点。我找到了Copy to slave plugin,但这并不能阻止奴隶在git clone上失败。

我希望有人知道实现这一目标的方法,因为为每个奴隶设置GitHub公钥都听起来很荒谬。

2 个答案:

答案 0 :(得分:5)

  

詹金斯显然在奴隶上运行git clone,这意味着每个奴隶都应该将它的公钥添加到GitHub中。

为什么不使用一个 deployment key (供所有Jenkins代理商使用)来访问您的回购邮件?

  

部署密钥是存储在服务器上的SSH密钥,用于授予对GitHub上单个存储库的访问权限。
  此密钥直接附加到存储库而不是用户帐户。

     

赞成

     
      
  • 有权访问服务器的任何人都有权部署存储库
  •   
  • 用户无需更改其本地SSH设置
  •   
     

缺点

     
      
  • 部署密钥只授予对单个存储库的访问权限,更复杂的项目可能有许多存储库可以提取到同一个服务器
  •   
  • 密钥具有对存储库的完全读/写访问权限
  •   
  • 部署密钥通常不受密码保护,如果服务器受到损害,密钥可以轻松访问
  •   

另一种方法是使用Credentials Jenkins plugin(在February 2012中初始化),这允许在Jenkins master中存储凭据

  

管理每个凭据的单点。在一个地方改变它,你就完成了。

     

从版本1.5开始,该插件现在支持将凭据分类到不同的“域”,以允许插件将凭据的选择限制为仅适用于那些凭据。

     

当插件要求提供凭据列表时,它可以添加一些关于凭据将在何处以及如何使用的规范。

凭据域配置示例:

https://wiki.jenkins-ci.org/download/attachments/59511751/Screen+Shot+2013-08-07+at+13.50.42.png?version=1&modificationDate=1375880556000

答案 1 :(得分:4)

最近的Jenkins版本通过在master上集中凭据来解决这个问题。