【发布时间】:2017-02-10 15:22:04
【问题描述】:
我使用的是企业版 GITHUB。 我正在创建一个自动构建服务器来构建我们的项目。 这些项目有子模块。
由于这个构建服务器不是“我”(它不能拥有我的用户凭据),它需要能够通过 github 的“部署密钥”功能从 GIT 下载项目。 (每个项目只读 ssh-keys)
限制是: 1. github 期望我以 ssh://git@mygithubserver.com 登录 2. github 强制执行一个策略,没有两个项目可以共享一个部署密钥(与为整个 github 服务器注册的常规用户密钥不同)。 [旁白,这背后的原因是什么?!] 3. 我的公司 IT 不允许共享任意帐户:用户始终与一个人关联,它不能属于服务器。
因此,我认为我唯一的选择是将部署密钥功能与不同的密钥一起用于不同的项目。 (部署密钥的开发基本上考虑了这种情况......)
我发现可以设置多个键的唯一方法是:https://gist.github.com/jexchan/2351996
现在关于子模块:这个技巧只适用于顶级项目,因为这是我可以指定自定义主机名的唯一地方,如:“git clone git@custom-git-host-name”命令。
当它进入 init 并更新 子模块 时,它使用父 repo 中的任何主机名(即原始 mygithubserver.com )。当我们的开发人员使用他们的个人密钥时,这将完美无缺。但是,对于不同项目需要不同部署密钥的构建服务器,这会失败。
有没有办法解决这个问题,让 git 为同一服务器上的不同项目使用不同的 ssh 密钥?
是否有一些愚蠢的方法可以让 2 个项目共享部署密钥? (我不允许修改 github 源代码,因为这是一个非常庞大的 IT 托管企业 githib 服务器)
【问题讨论】: