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