这似乎是 GH 和 Jenkins 更重要但不太了解和记录的功能之一,这似乎完全违背了 CI 的目的......
我正在尝试在 Jenkins 中设置一个简单的“在打开拉取请求时启动构建”作业。我已经扫描了几十个帖子,有些帖子已经有好几年了,但还没有找到一个真正有效的解决方案,从头到尾。我将 GH 2.15.4 和 Jenkins 2.89.3 与 GH Pull Request Builder 插件一起使用。我尝试按照各种“操作方法”帖子和文档设置管道作业和自由式项目。没有任何事情按预期工作。差远了。我已经设法使一些功能正常工作,但并非没有大量反复试验,这不会让我在使用它时感到非常模糊。 Webhooks 在完成所需的工作方面同样毫无值(value),因为在 Jenkins 中似乎没有任何东西可以激发工作,无论它是如何配置的。
对于初学者,是否有任何引用或文档可以解释以下由 Jenkins 自动创建的状态检查:
持续集成/ Jenkins /分支
持续集成/ Jenkins /pr-head
持续集成/ Jenkins /pr-merge
显然没有办法删除或编辑这些......他们只是“出现” Jenkins 的礼貌。我看过一些讨论,但有些解释相互矛盾,所以它们可能已经过时、不准确等。我想知道“什么是什么”,所以我知道哪些应该作为 PR 状态检查的“必需” .
任何指针将不胜感激!
最佳答案
我同意,这个问题很棘手,因为多年来 Jenkins 及其插件发生了很大变化。让我告诉你我是如何完成你所要求的。我将发布我所有的版本号(大部分是最新的)。
Jenkins 版本:2.176.1(java -jar/usr/share/jenkins/jenkins.war --version)
插件
另外,我用的是蓝海界面,这可能会影响事情(谁知道)
Github Webhooks
首先,为您的系统设置 webhook。 This is a good guide for Github Webhooks
转到您的 Github 存储库,然后单击“设置”选项卡。然后在左侧菜单中选择“Webhooks”:
我的 Jenkins 设置的 URL 是 https://jenkinsci.dorian.com .因此,在“有效载荷 URL”框中,我输入了 https://jenkinsci.dorian.com/github-webhook/
我将设置保留为“应用程序/json”和“向我发送所有内容”和“事件”
Webhooks 区域有一个方便的“最近交付”部分,可以显示您的 webhooks 是否正在使用 Jenkins。起初,我的网址错误,所以我的网址旁边有红色的 X。现在,它们都是绿色的复选标记。
Github 访问 token
许多指南建议您为 Jenkins 提供个人访问 token 以与您的存储库进行通信。为此,请转到右上角的帐户头像并选择设置 -> 开发人员设置 -> 个人访问 token -> 生成 token
把你想要的任何东西放在描述中。在“选择范围”下,如果您只想让它工作,请选中列表中的每个复选框。
我选择了:
单击保存,您将看到您的 key 。将它复制到安全的地方(我们很快就会使用它)。
配置 Jenkins
现在是困难的部分。尝试安装我上面列出的所有插件。
转到 Jenkins-Manage Jenkins->Configure System
找到 Github 部分,然后单击添加 Github 服务器
在凭据下,单击“添加”。你会被带到一个菜单。选择“密文”
点击保存。然后,从凭据列表中选择 DorianGithubCreds。
要进行测试,请点击“测试连接”。我的返回“已为用户 dnrahamim 验证的凭据”,速率限制:4998
现在去 Github 拉取请求生成器
配置作业
去应该建立你的 repo 的工作
在左侧菜单中选择“配置”
在项目-> Github 组织下
通知
现在,当我执行拉取请求时,或者每当我发布拉取请求的更改时,Jenkins 都会为该分支运行一个全新的构建。
Github 中的 Pull Request 本身也在底部列出了它的“状态检查”。当构建处于挂起状态时,状态检查为黄色。如果成功,它会得到一个绿色的复选标记。如果失败,它会得到一个红色的 X。
我最初遇到了一个问题,因为我有一个旧的 Jenkins 盒子,它也被配置为管理 Github webhooks 和构建拉取请求。它的构建失败了,所以它的通知是通过我的拉取请求的通知。我通过阻止旧的 Jenkins 盒子构建我最新的分支来解决这个问题。一旦旧的 Jenkins 盒子停止构建,来自新 Jenkins 盒子的通知就会传到 Github。
收尾
就是这样!这就是我有意配置的一切。请尝试我的配置,看看它是否适合您。如果我遗漏了什么,请告诉我。
使用 Github 配置 Jenkins 的难点在于,虽然有很多指南,但这些建议经常相互冲突,而且很多已经过时(有时甚至官方文档也已过时)。
尽管如此,这里有一些资源:
关于github - 使用 jenkins 管道构建 github 拉取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55264157/