Jenkins触发异常:未按轮询SCM配置触发构建问题求助
排查Jenkins意外自动构建的问题
兄弟,你遇到的这个情况我之前也踩过坑——明明只配置了5分钟轮询SCM,还禁用了远程触发,结果代码一提交就自动跑构建,轮询日志还明确说提交作者在排除列表里不会触发,这明显不是轮询触发的事儿!咱们一步步来揪出原因:
先查Jenkins配置里的隐藏触发器
有时候看着禁用了远程触发,但可能漏了其他触发选项:- 打开项目配置,拉到「构建触发器」板块,仔细检查有没有勾选类似
GitHub hook trigger for GITScm polling(如果是GitHub仓库)这类选项——这玩意儿是接收仓库webhook触发的,和轮询完全是两码事,勾着的话代码一提交就会触发构建。 - 还可以直接查看项目的
config.xml文件(要么通过Jenkins脚本控制台,要么到服务器上找对应项目的配置目录),搜索<triggers>标签,确认里面只有hudson.triggers.SCMTrigger(这是轮询触发器),如果有其他比如com.cloudbees.jenkins.GitHubPushTrigger这类推送触发器,直接删掉后重启Jenkins试试。
- 打开项目配置,拉到「构建触发器」板块,仔细检查有没有勾选类似
检查SCM仓库的Webhook设置
不管你用GitHub、GitLab还是其他托管平台,去仓库的设置里看看有没有配置指向你Jenkins的Webhook。哪怕Jenkins这边没开对应触发器,有些插件会自动处理Webhook请求触发构建。把多余的Webhook删掉,或者调整触发条件,只保留你需要的事件。排查插件的暗中操作
有些集成插件会自带触发逻辑,比如GitLab集成插件、Pipeline多分支相关插件:- 去「管理Jenkins」->「管理插件」里,看看已安装的插件列表,有没有和SCM推送、自动构建相关的,检查它们的配置是否开启了自动触发。
- 同时查看Jenkins系统日志(「系统管理」->「系统日志」),在构建触发的时间点附近找线索——日志里一般会明确写构建是被什么触发的,比如
Started by GitHub push by xxx或者Started by plugin XXX,这能直接帮你定位根源。
看看是不是外部脚本/定时任务在搞鬼
检查服务器上的crontab定时任务,有没有脚本在调用Jenkins API触发构建;也可以查看Jenkins的访问日志(安装目录下logs文件夹里的access.log),看看触发构建的请求IP来源,是不是本地或者其他外部地址。
如果这些排查完还是没找到问题,你可以补充下所用的SCM平台、Jenkins版本、安装的核心插件列表,方便进一步定位。
内容的提问来源于stack exchange,提问作者jtht




