如何在 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 克隆的方法。
要求
Jenkins 构建控制台输出为 public,因此输出中不应出现与登录相关的信息。
Jenkins 是为整个组织构建的,因此我不想将 ssh 密钥添加到我的 github 帐户。
完成它的best/cleaner方法是什么?
您通常会通过创建 read-only deploy key 来处理这类事情。部署密钥是与单个存储库相关联的 ssh (public) 密钥,而不是与您的整个 github 帐户相关联。默认情况下,部署密钥是只读的(除非您在添加密钥时选中 "allow write access" 复选框)。
link 还有一些其他建议,用于管理从自动化流程访问 github 存储库。
我是 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 克隆的方法。
要求
Jenkins 构建控制台输出为 public,因此输出中不应出现与登录相关的信息。
Jenkins 是为整个组织构建的,因此我不想将 ssh 密钥添加到我的 github 帐户。
完成它的best/cleaner方法是什么?
您通常会通过创建 read-only deploy key 来处理这类事情。部署密钥是与单个存储库相关联的 ssh (public) 密钥,而不是与您的整个 github 帐户相关联。默认情况下,部署密钥是只读的(除非您在添加密钥时选中 "allow write access" 复选框)。
link 还有一些其他建议,用于管理从自动化流程访问 github 存储库。