Github PR 触发多个 Jenkins 作业但只报告最后一个作业的状态

Github PR triggers multiple Jenkins jobs but reports only the state of the last job

我目前 GitHub 已连接到 Jenkins,对于每个拉取请求,GitHub 都会触发一个 Jenkins 作业,该作业似乎运行良好。我正在扩展它以触发多个作业,假设在一个新的拉取请求中,我有多个 JenkinsFiles,它们基本上是 运行 不同的配置。

所有作业均已正确触发,但报告回 github 的状态被覆盖。对于 1 个 PR,我将触发:

Job1
Job2
Job3

但我只得到 Job3 的状态:

continuous-integration/jenkins/pr-merge 
continuous-integration/jenkins/branch

我想看类似的内容:

continuous-integration/jenkins/job1 
continuous-integration/jenkins/job2 
continuous-integration/jenkins/job3

我已经尝试在每个作业的 JenkinsFile 上设置自定义提交上下文,但它似乎不起作用。有什么解决办法的建议吗?

谢谢

github 使用提交状态来识别构建结果。在您的情况下,它显示的是最新的,因为 commit context 是相同的。要显示 github 中所有作业的结果,您必须更改每个作业的提交上下文。这可以通过官方 github status API 完成,可以在 here

找到

由于您使用的是 Jenkins,因此可以通过使用名为 GitHub Pull Request Builder Plugin 的现有插件来实现您想要的功能。它实现了 github status API 并且可以为每个作业设置不同的上下文。可以找到插件存储库 here.

根据插件问题页面的 this 讨论和 audleman 的回答,这是必须要做的事情:

One Pull Request to Trigger Multiple Jobs

In the job configuration, go to:

Build Triggers -> GitHub Pull Request Builder -> Trigger Setup...

Change Commit Status Context to be unique for each job.