在 Debian 上配置 Jenkins 的构建触发器
一 前置准备
- 安装 Java 11(Jenkins 运行依赖):sudo apt update && sudo apt install -y openjdk-11-jdk && java -version
- 安装并启动 Jenkins:sudo systemctl start jenkins && sudo systemctl enable jenkins
- 访问 http://服务器IP:8080,使用文件 /var/lib/jenkins/secrets/initialAdminPassword 解锁并完成初始化
- 在 Manage Jenkins > Manage Plugins 安装所需插件:如 Git plugin、GitHub Integration、GitLab Plugin(按你的代码托管选择)
二 常用触发器与配置方式
- 定时触发(Build periodically)
- 适用:夜间构建、例行任务
- 位置:项目配置 > Build Triggers > Build periodically
- 示例:H 2 * * *(每天 02:00 左右执行,使用 H 做时间抖动以均衡负载)
- 轮询 SCM(Poll SCM)
- 适用:代码托管无法主动访问 Jenkins 时(如公网仓库访问内网 Jenkins)
- 位置:项目配置 > Build Triggers > Poll SCM
- 示例:H/30 * * * *(每 30 分钟检查一次是否有变更)
- GitHub Webhook
- 适用:GitHub 提交即触发
- 位置:项目配置 > Build Triggers > GitHub hook trigger for GITScm polling
- GitHub 仓库 Settings > Webhooks > Add webhook:Payload URL 填 http://<JENKINS_URL>/github-webhook/,事件选 push
- GitLab Webhook
- 适用:GitLab 提交即触发
- 位置:项目配置 > Build Triggers > 勾选 Build when a change is pushed to GitLab(高级可生成 Secret token)
- GitLab 项目 Settings > Webhooks:URL 填 http://<JENKINS_URL>/project/<JOB_NAME>,选择 Push events,如配置了 Secret token 一并填写
- 上游任务触发(Build after other projects are built)
- 适用:有依赖关系的多任务流水线
- 位置:项目配置 > Build Triggers > Build after other projects are built(选择上游任务)
- 远程触发(触发远程构建)
- 适用:外部系统/脚本触发
- 位置:项目配置 > Build Triggers > Trigger builds remotely(设置 Token)
- 触发方式:访问 JENKINS_URL/job/<JOB_NAME>/build?token=(可按需附带参数)
三 Pipeline 项目中声明式触发器示例
- 定时 + 上游任务示例
- 说明:使用 triggers 指令声明定时与上游触发;注意首次需手动运行一次以加载 Pipeline 后触发器才生效
- 示例:
pipeline {
agent any
triggers {
cron(‘H/15 * * * *’) // 每 15 分钟
upstream(upstreamProjects: ‘pre_job’, threshold: hudson.model.Result.SUCCESS)
}
stages {
stage(‘Hello’) { steps { echo ‘Hello World’ } }
}
}
- GitHub/GitLab 事件触发
- 说明:安装对应插件后,在 Web 界面勾选相应触发器即可,无需在 Pipeline 中额外配置触发器指令
四 网络与安全配置要点
- 确保 Jenkins 端口(默认 8080) 与(如使用代理/端口转发)50000 已放通(如 ufw allow 8080,50000/tcp)
- 若 GitHub/GitLab 为公网、Jenkins 在内网,优先使用 Webhook;若网络不通再考虑 Poll SCM
- 为 Webhook 配置 Secret token 并限制可触发来源,避免被滥用
- 在 GitHub/GitLab 测试 Webhook 是否能正常投递(页面提供 Test 按钮),并在 Jenkins 构建历史中确认触发来源
五 快速验证步骤
- 选择一种触发器(如 GitHub Webhook 或 Poll SCM),保存配置
- 进行一次代码 push 或等待轮询时间窗口到达
- 在 Jenkins 项目页面查看 Build History 与 Console Output,确认是否自动触发并成功执行