我是github组织的所有者,可以访问所有存储库。其中一些是私人的,其他则是公共的。我正在尝试将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 clone并运行测试。我找不到一种方法来对组织的私有存储库进行git克隆。
要求
Jenkins build Console输出是公共的,因此与登录相关的信息不应出现在输出中。
Jenkins是为整个组织构建的,因此我不想将ssh密钥添加到我的github帐户中。
最好的/更清洁的方法是什么?
通常,您可以通过创建只读的部署密钥来处理此类事情。部署密钥是与单个存储库而不是与整个github帐户关联的ssh(公共)密钥。默认情况下,部署密钥为只读(除非添加密钥时选中了“允许写访问权限”复选框)。
该链接还提供了其他一些建议,用于管理从自动化过程对github仓库的访问。