使用 Jenkins 多分支流水线时,您可以将状态检查与 GitHub 拉取请求集成。
以下是状态检查的示例

要实现这些类型的状态检查,您需要创建一个与 Jenkins 主实例集成的 GitHub 应用。
在本博客中,我们将介绍如何创建一个 GitHub 应用,以便在流水线中启用状态检查。
创建 GitHub 应用
要创建 GitHub 应用,请选择您的 GitHub 个人资料,然后转到"设置",如下所示。

向下滚动并选择开发者设置

然后点击 New GitHub App 按钮创建一个新的 GitHub 应用

您需要在配置中填写以下详细信息。
- GitHub 应用名称:此名称必须是唯一的。例如,jenkins-auth-app。请将其替换为所需的名称。
- 主页 URL:输入您的 Jenkins URL。
- Webhook URL:包含 webhook 路径的 Jenkins URL(http://3.107.8.66:8080/github-webhook/)




在"仓库权限"下,从下拉菜单中选择以下权限。
- 管理:只读
- 检查:读写
- 提交状态:读写
- 内容:只读(用于在 git fetch 期间读取 Jenkinsfile 和仓库内容)。
- 元数据:只读
- 拉取请求:只读

在"订阅事件"下,选择以下事件:
- 检查运行
- 检查套件
- 拉取请求
- 推送
- 代码库

创建应用程序后,您将看到生成私钥的通知,如下所示。

单击生成私钥选项,然后单击生成私钥按钮,如下所示。

它会下载一个私钥。
现在,您需要使用以下命令将密钥转换为 Jenkins 可以使用的格式。将 key-in-your-downloads-folder.pem 替换为您下载的私钥。
ninjamac@ip-192-168-1-95 key % openssl pkcs8 -topk8 -inform PEM -outform PEM -in rockjenkinsgithubapp.2025-04-18.private-key.pem -out converted-github-app.pem -nocrypt
我们需要将转换后的密钥添加到 Jenkins 凭证中。
安装 Github 应用
现在,在应用配置页面上,您将看到一个名为"安装应用"的选项,如下所示。点击该选项即可为所有仓库启用此应用。

您可以选择所需的全部或单个存储库,然后单击"安装"。

将私钥添加到 Jenkins 凭证
现在,我们需要将转换后的 PEM 密钥添加到 Jenkins 凭证中。
前往 Jenkins 主页 --> 管理 Jenkins --> 凭证。

在"凭据"下,选择全局选项。
然后,选择"添加凭据"选项以添加新凭据。
现在,您需要选择"类型"为"GitHub 应用"。

我们还需要 Github 应用 ID。您可以从 Github 应用配置中获取它,如下所示。

在key字段中,添加我们之前转换好的converted-github-app.pem私有文件内容,然后点击Create按钮,如下图所示。

差不多就是这样了。
现在,您可以在多分支管道中使用此凭证来启用 PR 期间的检查。
提交PR验证Jenkins status
修改readme文件,然后commit到develop分支,然后创建PR到master分支。

这时github 会通过github app来通知Jenkins webhook,触发PR pipeline

从下面的示例中可以看到有一个状态检查已经成功,单还有一个状态还没有完成。
我们还可以在github -repo上设置分支保护rule: 在合并之前启用状态检查


总结
通过安装github app,你在通过github创建一个拉取请求的时候,会通过Jenkins webhook触发Jenkins PR 流水线,Jenkins 会将流水线的状态上报给github,这样可以确保该PR请求在从 Jenkins 构建作业获取所需的状态检查通知之前不会合并,通过与保护分支规则结合,你可以确保分支被合并之前必须通过所有的状态检查,从而有效地保护分支。