CentOS 上 Jenkins 构建触发器配置指南
一 前置准备
- 确保系统已安装 Java 8/11、Git,Jenkins 服务已启动并可通过 8080 访问;在 CentOS 7/8 上可用 yum 安装并启动:sudo yum install jenkins -y && sudo systemctl start jenkins && sudo systemctl enable jenkins。
- 在 Jenkins 中安装常用插件:Git plugin、GitLab Plugin(如使用 GitLab)、Gitee Plugin(如使用码云)、Pipeline(如使用 Jenkinsfile)。
- 若使用容器部署(如 docker-compose),需映射 8080 与 50000 端口,并挂载 /var/run/docker.sock 与宿主机的 docker 命令,以便在容器内执行宿主机的 Docker。
二 常用触发器配置步骤
- 远程触发(Build Token)
- 在任务“构建触发器”勾选 触发远程构建(例如,使用脚本),设置 身份验证令牌(Token)。
- 通过 URL 触发:JENKINS_URL/job/任务名/build?token=TOKEN;示例:http://192.168.174.30:8080/jenkins/job/text1/build?token=123。
- 定时构建(Build periodically)
- 勾选 定时构建,使用 Cron 语法(Jenkins 使用本地时区)。示例:H/5 * * * * 表示每 5 分钟触发一次。
- 轮询 SCM(Poll SCM)
- 勾选 轮询 SCM,同样使用 Cron 语法。示例:H/3 * * * * 表示每 3 分钟检查一次代码变更并触发构建。
- 其他工程构建后触发(Build after other projects are built)
- 勾选并选择上游 项目名称 与触发条件(如 构建成功时),用于编排多任务流水线。
- GitLab Webhook
- 安装 GitLab Plugin,在任务“构建触发器”勾选 Build when a change is pushed to GitLab. GitLab CI Service URL: …,点击 高级 生成 Secret token。
- 在 GitLab 项目:设置 → 网络 → 出站请求,勾选 允许来自 webhooks 和集成对本地网络的请求;项目设置 → Webhooks 添加 URL 与 Secret token,事件选择 Push events,可测试推送触发。
- Gitee Webhook
- 安装 Gitee Plugin,在任务“构建触发器”勾选 Enabled Gitee triggers(如 Push Events、Opened/Updated Merge Request Events),可设置 Secret Token for Gitee WebHook。
- 在 码云 仓库:设置 → WebHooks 添加 URL 与密码(如有),勾选 PUSH、Pull Request 事件并测试。
三 防火墙与网络连通性
- 开放 8080(Jenkins Web)与 50000(JNLP 代理)端口(如使用代理/节点):firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --permanent --add-port=50000/tcp && firewall-cmd --reload。
- 容器部署时,docker-compose.yml 需映射 8080:8080、50000:50000,并确保宿主机防火墙与云安全组策略允许相应端口访问。
- GitLab 自托管场景需放行 Webhooks 出站请求到 Jenkins 主机,避免因网络策略导致 403/超时。
四 排错与最佳实践
- 触发器不生效
- 查看 系统管理 → 系统日志 与 项目 → 构建历史/控制台输出 的 Hook 调用记录;在 GitLab/Gitee 的 Webhooks 页面查看 Recent Deliveries 与响应码。
- 若使用 GitLab,确认已开启 允许本地网络请求;若使用 令牌触发,确保 Token 一致且任务允许远程构建。
- 轮询与定时
- 轮询 SCM 会主动请求 Git,适合代码托管在外网或无法开放 Webhook 的场景;定时构建 不依赖代码托管回调,但可能带来空跑。
- 安全建议
- 为 远程触发 与 Webhooks 设置 Secret Token,仅允许受信任来源调用;必要时在 Nginx/反向代理 层增加 鉴权 与 IP 白名单。