jenkins - Jenkins:从 GitHub 网络钩子触发构建的作业仅在主节点上运行
问题描述
最初的想法是在将更改合并到 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 触发器构建操作是否仅限于在主节点上执行?
解决方案
我已经设法找到解决问题的方法。现在构建被触发并在构建配置屏幕中设置的节点上运行。
我所做的是将主节点设置为仅在需要时使用。
为此,您需要:
- 转到“管理 Jenkins > 配置系统”并在“使用”字段中选择“仅构建具有与此节点匹配的标签表达式的作业”</li>
- 保存设置。
推荐阅读
- snowflake-cloud-data-platform - 创建管道时数据类型不匹配
- flutter - 关闭应用程序时颤动agora视频通话屏幕
- bash - IF 语句不执行条件 (bash)
- sql - 从给定的日期时间为每年的月份生成行
- python-3.x - python将一个单位分配给一个值
- reactjs - 根据点击 React-Native 切换内容视图
- git - 通过删除提交从 git repo 历史记录中删除文件是否足够?
- c# - 从 SQL Server 获取简单数据需要很长时间 - .NET
- laravel - 将每个类别的子行(在单个表中)限制并显示为特定数字 - laravel
- python - 用 pandas 中的其他列填充 Nas