首页 > 解决方案 > Jenkins:从 GitHub 网络钩子触发构建的作业仅在主节点上运行

问题描述

最初的想法是在将更改合并到 GitHub 上的主分支后,在特定节点(从属节点)上触发特定构建。

配置:

  1. Jenkins (ver 2.226) 在 VirtualBox 的 Centos8 虚拟机上;
  2. 虚拟机设置:Java 11 OpenJDK(openjdk 版本“11.0.5”),git 版本 2.18.2

完成的步骤:

  1. 创建了一个 Jenkins 项目(作业),它克隆了一个 Github 存储库并在其上运行一些 mvn 命令;
  2. 将作业配置为在新节点上运行,主节点除外;

正如预期的那样:作业运行正常。

  1. 我使用 ngrok 公开了我的 Jenkins 服务器并生成了一个外部链接;
  2. 将“ http://bla.ngrok.io/github-webhook/ ”有效载荷 url 添加到 GitHub;

不出所料:我可以成功 ping Jenkins 服务器。

  1. 在 Jenkins 中,我将作业配置为通过 SCM 触发(启用 'GitHub hook trigger for GITScm polling');
  2. 然后我去 GitHub 并提交对 master 分支的更改。

实际结果:构建被触发,但仅在主节点上。

  1. 我将主节点标记为离线,以强制触发的作业在新的从节点上执行。实际结果:什么都没有发生。

  2. 我启用了主节点并尝试再次触发作业。实际结果:什么都没有发生。

我已经跟踪了 jenkins.log 文件以查看发生了什么,并记录了“戳构建”操作。在此之后,它可能会等待执行构建,但这永远不会发生。最后,启动“定期后台构建丢弃器”。

2020-03-24 21:35:11.733+0000 [id=16]    INFO    o.j.p.g.w.s.DefaultPushGHEventSubscriber#onEvent: Received PushEvent for https://github.com/some/some_project from [someip] ⇒ http://blah.ngrok.io:8080/github-webhook/
2020-03-24 21:35:11.734+0000 [id=16]    INFO    o.j.p.g.w.s.DefaultPushGHEventSubscriber$1#run: Poked simple_build
2020-03-24 21:39:07.386+0000 [id=206]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Periodic background build discarder
2020-03-24 21:39:07.403+0000 [id=206]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Periodic back

我错过了什么吗?

web-hook 触发器构建操作是否仅限于在主节点上执行?

标签: jenkinsgithubwebhookscentos8

解决方案


我已经设法找到解决问题的方法。现在构建被触发并在构建配置屏幕中设置的节点上运行。

我所做的是将主节点设置为仅在需要时使用。

为此,您需要:

  • 转到“管理 Jenkins > 配置系统”并在“使用”字段中选择“仅构建具有与此节点匹配的标签表达式的作业”</li>
  • 保存设置。

推荐阅读