Jenkins 多分支流水线: 如何创建用于 Jenkins 状态检查的 GitHub 应用

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

以下是状态检查的示例

要实现这些类型的状态检查,您需要创建一个与 Jenkins 主实例集成的 GitHub 应用。

在本博客中,我们将介绍如何创建一个 GitHub 应用,以便在流水线中启用状态检查。

创建 GitHub 应用

要创建 GitHub 应用,请选择您的 GitHub 个人资料,然后转到"设置",如下所示。

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

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

您需要在配置中填写以下详细信息。

  1. GitHub 应用名称:此名称必须是唯一的。例如,jenkins-auth-app。请将其替换为所需的名称。
  2. 主页 URL:输入您的 Jenkins URL。
  3. Webhook URL:包含 webhook 路径的 Jenkins URL(http://3.107.8.66:8080/github-webhook/)

在"仓库权限"下,从下拉菜单中选择以下权限。

  1. 管理:只读
  2. 检查:读写
  3. 提交状态:读写
  4. 内容:只读(用于在 git fetch 期间读取 Jenkinsfile 和仓库内容)。
  5. 元数据:只读
  6. 拉取请求:只读

在"订阅事件"下,选择以下事件:

  1. 检查运行
  2. 检查套件
  3. 拉取请求
  4. 推送
  5. 代码库

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

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

它会下载一个私钥。

现在,您需要使用以下命令将密钥转换为 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 构建作业获取所需的状态检查通知之前不会合并,通过与保护分支规则结合,你可以确保分支被合并之前必须通过所有的状态检查,从而有效地保护分支。

相关推荐
qianmoQ2 小时前
GitHub 趋势日报 (2025年04月20日)
github
周周的奇妙编程5 小时前
解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy
阿里云·云原生·云计算
problc6 小时前
探索 Higress:下一代云原生 API 网关
云原生
yuzhangfeng6 小时前
【日志体系】ELK Stack与云原生日志服务
elk·云原生·云计算
西瓜本瓜@6 小时前
在 Android 中实现通话录音
android·java·开发语言·学习·github·android-studio
kevin_cheng7 小时前
ByConity x CubeFS: 万亿级OLAP平台云原生构建方案
云原生
码流怪侠7 小时前
🚀 2025年 GitHub 暴涨 star 热门项目 🔥【持续更新】
程序员·github
阿里云云原生8 小时前
从零开始开发 MCP Server
云原生
阿里云云原生8 小时前
以人脸识别验票机为例,通义灵码如何助力嵌入式软硬件开发中的快速功能验证
云原生