Linux 上 Jenkins 构建触发器配置指南
前置检查
- 确保 Jenkins 服务已启动并可通过浏览器访问(如 http://<服务器IP>:8080)。
- 安装并启用与代码托管相关的插件:如 Git plugin、GitHub plugin、GitLab plugin、Gitee plugin(按需选择)。
- 在 Manage Jenkins → Manage Credentials 中预先配置 SSH 私钥或用户名/密码等凭据,以便拉取代码与对接 Webhook 安全校验。
内置触发器配置
- 进入项目 → Configure → Build Triggers,按需勾选并填写:
- 触发远程构建(Trigger builds remotely):勾选后生成带令牌的 URL,例如 http:///job//build?token=;可用于脚本、外部系统或按钮触发。
- 其他工程构建后触发(Build after other projects are built):选择前置任务,并可设置“仅当构建稳定时触发”等条件,用于编排多任务流水线。
- 定时构建(Build periodically):按 CRON 表达式定时执行,与代码变更无关,适合夜间构建、报表汇总等。
- 轮询 SCM(Poll SCM):按 CRON 定时检查远端仓库是否有变更,有变更则触发;注意其会定时扫描仓库,可能带来额外负载。
常用 CRON 示例(字段顺序:分 时 日 月 周):
- 每 15 分钟:**H/15 * * * ***
- 每天 02:00:**0 2 * * ***
- 工作日 09:00–17:00 每 2 小时:H H(9-16)/2 * * 1-5
提示:尽量使用 H(Hash)避免多任务在同一时刻集中触发。
代码托管平台 Webhook 触发
- GitHub
- 项目配置 → Build Triggers 勾选 GitHub hook trigger for GITScm polling。
- 在 GitHub 仓库 Settings → Webhooks → Add webhook 添加:
- Payload URL:http:///github-webhook/(路径以实际插件为准)
- Content type:application/json
- 事件:选择 Push events(可按需勾选 PR 相关事件)
- 保存后可用 “Test delivery” 验证,随后推送代码验证自动触发。
- GitLab
- 安装 GitLab plugin 与 GitLab Hook plugin。
- 项目配置 → Build Triggers 勾选 Build when a change is pushed to GitLab 或 Accept GitLab Webhook。
- 在 GitLab 项目 Settings → Integrations 添加 Webhook:
- URL:Jenkins 项目生成的 Webhook 地址
- Secret Token:与 Jenkins 中配置保持一致(若启用)
- 事件:勾选 Push events、Merge request events 等
- 若 GitLab 与 Jenkins 同内网,需在 GitLab 管理后台开启:Admin Area → Settings → Network → Outbound requests → Allow requests to the local network from web hooks and services。
- Gitee
- 项目配置 → Build Triggers 勾选 Enabled Gitee triggers,按需选择 Push Events、Opened/Updated/Accepted Merge Request Events 等。
- 可设置 Secret Token for Gitee WebHook,在 Gitee 仓库 Settings → WebHooks 添加相同 URL 与 Token,保存并测试。
Pipeline 项目中的触发器写法
- 在 Jenkinsfile 的 triggers 块中声明,例如:
- 定时每天 02:00 构建:
triggers {
cron('0 2 * * *')
}
- 远程触发(需配合“触发远程构建”启用令牌):
triggers {
githubPush()
}
- 结合 SCM 轮询(较少用,优先 Webhook):
triggers {
pollSCM('H/5 * * * *')
}
说明:具体可用触发器取决于安装的插件与项目类型。
安全与排错要点
- 使用 Secret Token 校验 Webhook 来源,避免被恶意调用;在 GitHub/GitLab/Gitee 与 Jenkins 两端保持一致。
- 若 Webhook 未生效,优先检查:
- Jenkins 是否允许匿名读取 Job(若未启用 CSRF 保护,需在系统配置中开启并正确配置);
- 防火墙与安全组是否放行 8080(或自定义端口)与 Webhook 来源 IP;
- 仓库 Webhook 的 Payload URL、Content type、事件类型是否匹配;
- Jenkins 系统日志与项目 Build Triggers 页面提示信息;
- 对于 GitLab,确认已开启对本地网络请求的白名单。
- 性能建议:优先使用 Webhook 实时触发,谨慎使用 轮询 SCM 以免增加系统负载。