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

joo*_*ies 9 git github jenkins

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

对我来说,这听起来像一个非常奇怪的架构设计.我更喜欢主服务器(具有我的所有凭据)和clone/ checkout并将工作区复制到从属服务器.但经过一些谷歌搜索,我还没有找到办法做到这一点.我找到了Copy to slave插件,但这并不能阻止slave失败git clone.

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

Von*_*onC 6

Jenkins显然在slave上运行git clone,这意味着每个slave都应该将它的publickey添加到GitHub中.

为什么不使用一个 部署密钥(供所有Jenkins代理使用)来访问您的仓库?

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

优点

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

缺点

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

另一种方法是使用Credentials Jenkins插件(20122月初始化),该插件允许在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