如何在 Jenkins 作业中克隆 github 组织的私有存储库

How to Clone a private repository of github organization in a Jenkins Job

我是 github 组织的所有者,我可以访问所有存储库。其中一些是私有的,另一些是 public。我正在尝试设置 Jenkins 以在向组织的任何存储库发出拉取请求时触发构建。问题是我有一个外部系统,每当发出拉取请求时,它都会通过 github webhooks 通知。我必须将 Jenkins 与这个系统集成,这是一项要求。该系统还可以通过 api 请求触发对 Jenkins 的通知。 (https://python-jenkins.readthedocs.org/en/latest/examples.html)

我可以看到所有自动 Jenkins 构建触发器的解决方案都与 Jenkins 的 github 插件有关。 (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)。我目前无法使用它,因为我在 github 和 Jenkins 之间有一个新系统的额外间接访问。

当前,当我的系统收到来自 github 的通知时,它会发出 api 请求以使用存储库名称和分支构建作业。现在,jenkins 作业执行 shell 脚本,该脚本执行存储库的 git 克隆和 运行 测试。我找不到对组织的私有存储库进行 git 克隆的方法。

要求

  1. Jenkins 构建控制台输出为 public,因此输出中不应出现与登录相关的信息。

  2. Jenkins 是为整个组织构建的,因此我不想将 ssh 密钥添加到我的 github 帐户。

完成它的best/cleaner方法是什么?

您通常会通过创建 read-only deploy key 来处理这类事情。部署密钥是与单个存储库相关联的 ssh (public) 密钥,而不是与您的整个 github 帐户相关联。默认情况下,部署密钥是只读的(除非您在添加密钥时选中 "allow write access" 复选框)。

link 还有一些其他建议,用于管理从自动化流程访问 github 存储库。