在GitHub企业中,我们有组织A下的项目A。当我向项目A提交一个PR (拉请求)时,会触发continuous-integration/jenkins/pr-merge,它运行一个Jenkins管道来构建代码并执行单元测试。这样,如果单元测试失败,我们就可以防止PR被合并到主服务器中。
例如,我在GitHub中的项目A的PR中看到了这一点,其中包括一个损坏的单元测试:

现在,我正在尝试将组织B下的项目B配置为相同的行为方式。然而,这是行不通的。这就是我在GitHub中的项目B的PR中看到的,其中包括一个损坏的单元测试:

请注意,B项目的PR并没有启动continuous-integration/jenkins/pr-merge。
项目A和项目B的配置
GitHub ->设置->分支分支保护规则
GitHub中的项目A有一个只启用一个设置的master分支保护规则:
有趣的是,“合并前通过状态检查要求”设置没有启用。出于好奇,我启用了它(没有保存它),并注意到“持续集成/jenkins/pr”显示在它下面作为一个选项。
我将Project配置为对master具有完全相同的分支保护规则,只启用了“合并前需要请求检查”。出于好奇,我启用了“在合并前通过状态检查”(但没有保存),它甚至没有将continuous-integration/jenkins/pr-merge显示为选项。它只说:“没有找到状态检查。对不起,我们在上周找不到这个存储库的任何状态检查。”
GitHub ->设置-> Hooks -> Webhooks
GitHub中的项目A有一个webhook,配置有:
https://jenkins.mycompany.com/github-webhook/application/json我用完全相同的设置为项目B创建了一个webhook。在我为项目B提交了一个PR之后,我在项目B的webhook的“最近交付”下看到了几个项目,上面有绿色的检查点和"200“响应代码,所以我认为它的配置是正确的。
CloudBees Jenkins企业
在Jenkins中,项目A的管道类型为"GitHub Organization“,其设置如下:
我在Jenkins中的项目B下创建了一个具有相同设置的"GitHub Organization“类型的项目(除了特定于项目A的任何设置都被相应的项目B特定设置所替换)。
有什么问题吗?
考虑到项目B的GitHub PRs未能启动continuous-integration/jenkins/pr-merge,我似乎缺少了一些配置。不幸的是,我们的GitHub/Jenkins管理员还没有弄清楚到底出了什么问题。
更新
我们已经确认B项目实际上是在提交PR时在Jenkins代理上启动一个构建。问题是GitHub没有在公共关系的网页上显示continuous-integration/jenkins/pr-merge。我们需要这样做,这样如果构建失败,PR就可以被阻止,而且这样我们就可以快速地看到出了什么问题。
发布于 2021-12-08 08:30:38
作为回答,张贴我们在评论中得到的决议。
问题是在Jenkins中使用令牌的用户没有正确的权限访问存储库上的post状态检查。
与项目之间的差异()
这导致projectB状态检查出现问题,无法从构建中填充Jenkins的信息:
continuous-integration/jenkins/pr-merge在GitHub存储库的状态检查中丢失。
摘要:
在GitHub和Jenkins之间建立连接时,我们需要向令牌的用户持有者提供所需的访问。
在本例中,我们希望更新需要写入访问级别的github状态

用户的令牌应该有作用域repo:status
https://stackoverflow.com/questions/69452489
复制相似问题