这似乎是GH和Jenkins的更重要但又很少了解和记录的功能之一,似乎完全破坏了CI的目的...
我正在尝试在詹金斯(Jenkins)中建立一个简单的“在拉动请求打开时启动构建”作业。我已经扫描了数十篇已有数年历史的帖子,但是还没有找到一种可行的解决方案,而且还没有开始。我在GH Pull Request Builder插件中使用GH 2.15.4和Jenkins 2.89.3。我尝试按照各种“如何”张贴文章和文档来设置管道作业和自由样式项目。没有任何预期的效果。差远了。我已经设法使某些功能起作用,但并非没有经过反复试验的尝试,这并没有使我感到困惑。 Webhooks对于完成所需的任务同样毫无价值,因为无论如何配置,Jenkins似乎都无法解决。
对于初学者来说,是否有任何参考文献或文档来说明Jenkins自动创建的以下状态检查:
连续积分/詹金斯/分支
continuous-integration / jenkins / pr-head
continuous-integration /詹金斯/ pr-merge
显然,没有办法删除或编辑这些……它们只是“出现”詹金斯的礼貌。我看过一些讨论,但有些解释相互矛盾,因此它们可能已经过时,不准确,等等。我想知道“做什么”,因此我知道在PR状态检查中应该“要求”哪些内容
任何指针将不胜感激!
答案 0 :(得分:2)
我同意,这个问题很棘手,因为多年来詹金斯及其插件已经发生了很大的变化。让我告诉您我如何完成您的要求。我将发布所有版本号(大部分是最新的)。
Jenkins版本:2.176.1(java -jar /usr/share/jenkins/jenkins.war --version)
插件
此外,我使用了Blue Ocean界面,这可能会影响事物(谁知道)
Github Webhooks
首先,为您的系统设置Webhooks。 This is a good guide for Github Webhooks 转到您的Github存储库,然后单击“设置”选项卡。然后在左侧菜单中选择“ Webhooks”:
我的Jenkins设置的URL为https://jenkinsci.dorian.com。因此,在“有效载荷网址”框中,我输入了https://jenkinsci.dorian.com/github-webhook/
我将设置保留为“ application / json”,“将所有内容发送给我”和“活动”
“ Webhooks”区域有一个方便的“最近发送”部分,可以向您显示您的Webhooks是否正进入Jenkins。刚开始,我输入的网址错误,因此我的旁边有红色的X。现在,它们都是绿色的对勾。
Github访问令牌
许多指南建议您为Jenkins提供一个个人访问令牌,以与您的仓库进行通信。为此,请转到右上角的帐户头像,然后选择设置->开发人员设置->个人访问令牌->生成令牌
根据需要输入任何内容。在“选择范围”下,如果只希望它起作用,请选中列表中的每个复选框。
我选择了:
点击保存,您将看到您的秘密密钥。将此文件复制到安全的地方(我们会尽快使用)。
配置Jenkins
现在是最困难的部分。尝试安装上面列出的所有插件。
转到Jenkins-管理Jenkins->配置系统
找到 Github 部分,然后单击“添加Github服务器”
在凭据下,单击“添加”。您将被带到菜单。选择“秘密文本”
保存。然后,从凭据列表中选择DorianGithubCreds。
要进行测试,请点击“测试连接”。我的返回“用户dnrahamim验证的凭据”,速率限制:4998
现在转到 Github Pull Request Builder
配置作业
转到应建立回购协议的工作 在左侧菜单中选择“配置”
在项目下-> Github组织
通知
现在,当我执行请求请求时,或者每当我对请求请求进行更改时,Jenkins都会为该分支运行新的构建。
Github中的Pull Request本身也在底部列出了其“状态检查”。当构建挂起时,状态检查为黄色。如果成功,它将显示一个绿色的选中标记。如果失败,则会显示红色的X。
最初,我遇到了一个问题,因为我有一个旧的Jenkins盒子,该盒子还配置为管理Github Webhooks和构建请求请求。它的构建失败了,所以它的通知是通过我的请求请求发出的。我通过防止旧的Jenkins盒子建立我的最新分支来解决此问题。旧的Jenkins盒子停止构建后,新的Jenkins盒子发出的通知会将其发送到Github。
总结
就是这样!这就是我有意配置的所有内容。请尝试我的配置,看看它是否适合您。让我知道是否遗漏了任何东西。
使用Github配置Jenkins的困难之处在于,尽管有很多指南,但建议经常相互冲突,并且很多建议已经过时了(有时甚至官方文档也已过时)。
不过,这里有一些资源:
答案 1 :(得分:0)
GitHub具有“添加Webhook”功能,可在存储库设置-> Webhooks部分中访问。有4个输入 1.有效负载URl-输入詹金斯网址 2.内容类型-application / json 3.机密-如果要配置机密,这是可选的 4.您想触发哪个事件? -选择“让我选择单个事件”选项 一堆复选框选项可见,请选中“拉请求”选项。打开Pull请求后,此选项将向Jenkins发送请求
下一步是在Jenkins中创建一个作业,该作业将监听GitHub事件并开始构建