首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“连续集成/jenkins/pr”不是由GitHub在拉请求时触发的?

为什么“连续集成/jenkins/pr”不是由GitHub在拉请求时触发的?
EN

Stack Overflow用户
提问于 2021-10-05 14:39:38
回答 1查看 4.8K关注 0票数 3

在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,配置有:

  • 有效载荷URL https://jenkins.mycompany.com/github-webhook/
  • 内容类型application/json
  • 让我选择单个事件:选中请求、推送、存储库。
  • 活动:已检查

我用完全相同的设置为项目B创建了一个webhook。在我为项目B提交了一个PR之后,我在项目B的webhook的“最近交付”下看到了几个项目,上面有绿色的检查点和"200“响应代码,所以我认为它的配置是正确的。

CloudBees Jenkins企业

在Jenkins中,项目A的管道类型为"GitHub Organization“,其设置如下:

  • API端点:kubernetes-cbs-自动化(https://git.mycompany.com/api/v3)
  • 全权证书:特定于项目A的全权证书
  • 业主:项目A的GitHub组织
  • 行为:存储库:按名称过滤(带有正则表达式):正则表达式:项目A的GitHub回购的名称
  • 行为:在存储库中:从源发现拉请求:策略:将拉请求与当前目标分支修订合并
  • 项目识别器:管道Jenkinsfile:脚本路径:ci-cd/jenkins/ProjectA-管线. Project
  • 属性策略:所有分支都具有相同的属性。
  • 扫描组织触发器:“定期运行,否则不运行”选中:间隔:1天
  • 孤儿项目策略:“丢弃旧项目”选中
  • 孤儿项目战略:战略:继承
  • 子扫描触发器:“定期运行,否则不运行”选中:间隔:1天
  • 自动分支项目触发:要自动生成的分支名称:.*

我在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就可以被阻止,而且这样我们就可以快速地看到出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-08 08:30:38

作为回答,张贴我们在评论中得到的决议。

问题是在Jenkins中使用令牌的用户没有正确的权限访问存储库上的post状态检查。

与项目之间的差异()

  • OrgA/ProjectA --用户是组织的成员 (OrgA),它还添加到具有Read access的回购的合作者部分,以及在回购本身(ProjectA)上加入 Team 的团队成员。
  • OrgB/ProjectB -用户是组织( of the organisation,OrgB)的一个成员,也在回购(ProjectB)的合作者部分(ProjectB),但是读取访问(Read)。

这导致projectB状态检查出现问题,无法从构建中填充Jenkins的信息:

continuous-integration/jenkins/pr-merge在GitHub存储库的状态检查中丢失。

摘要:

在GitHub和Jenkins之间建立连接时,我们需要向令牌的用户持有者提供所需的访问。

在本例中,我们希望更新需要写入访问级别的github状态

用户的令牌应该有作用域repo:status

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69452489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档