最初的想法是在将更改合并到 GitHub 上的主分支后,在特定节点(从属节点)上触发特定构建。
配置:
- Jenkins (ver 2.226) 在 VirtualBox 的 Centos8 虚拟机上;
- 虚拟机设置:Java 11 OpenJDK(openjdk 版本“11.0.5”),git 版本 2.18.2
完成的步骤:
- 创建了一个 Jenkins 项目(作业),它克隆了一个 Github 存储库并在其上运行一些 mvn 命令;
- 将作业配置为在新节点上运行,主节点除外;
正如预期的那样:作业运行正常。
- 我使用 ngrok 公开了我的 Jenkins 服务器并生成了一个外部链接;
- 将“ http://bla.ngrok.io/github-webhook/ ”有效载荷 url 添加到 GitHub;
不出所料:我可以成功 ping Jenkins 服务器。
- 在 Jenkins 中,我将作业配置为通过 SCM 触发(启用 'GitHub hook trigger for GITScm polling');
- 然后我去 GitHub 并提交对 master 分支的更改。
实际结果:构建被触发,但仅在主节点上。
我将主节点标记为离线,以强制触发的作业在新的从节点上执行。实际结果:什么都没有发生。
我启用了主节点并尝试再次触发作业。实际结果:什么都没有发生。
我已经跟踪了 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 触发器构建操作是否仅限于在主节点上执行?