温馨提示×

CentOS环境下Jenkins如何进行任务调度

小樊
45
2025-12-27 12:57:27
栏目: 智能运维

CentOS环境下Jenkins任务调度实践

一 内置定时构建 Build periodically

  • 进入任务的配置页,勾选构建触发器中的Build periodically,填写 Jenkins Cron 表达式。Jenkins Cron 使用 5 个字段:MINUTE HOUR DOM MONTH DOW,支持特殊字符:H(哈希,做负载均衡)/(步长)-(范围),(枚举)。为避免多实例同时触发,建议用 H,如:**H/15 * * * ***(每 15 分钟,时间点随机分布)。示例:每天 02:00 执行:**0 2 * * ***;工作日 09:45–15:452 小时执行:*H /2 * * 1-5。界面右侧通常有 “?” 帮助可查看规则。

二 Pipeline 中定义调度

  • Jenkinsfiletriggers 块内使用 cron,语法与界面一致;若同时在界面与 Pipeline 中配置,通常以 Pipeline 为准。示例:
pipeline {
  agent any
  triggers {
    cron('H 23 * * *')           // 每天 23:00
    pollSCM('H/5 * * * *')       // 每 5 分钟检查 SCM 变更并触发
  }
  stages {
    stage('Build') {
      steps { echo 'Building...' }
    }
  }
}
  • 说明:pollSCM 适合“代码变更即构建”的场景,表达式同样支持 H 做抖动。

三 使用系统 Cron 调用 Jenkins API 触发

  • 适合外部编排或与现有系统定时对齐。步骤:
    1. 在 Jenkins 生成 API Token(用户头像 → ConfigureAPI Token → 生成新 Token)。
    2. 在 CentOS 执行 crontab -e 添加任务,例如每天 02:00 触发:
0 2 * * * /usr/bin/curl -X POST \
  --user 'USERNAME:API_TOKEN' \
  'http://JENKINS_URL/job/JOB_NAME/build'

如需传参(参数化构建):

0 2 * * * /usr/bin/curl -X POST \
  --user 'USERNAME:API_TOKEN' \
  --data-urlencode 'json={"parameter":[{"name":"delay","value":"300sec"}]}' \
  'http://JENKINS_URL/job/JOB_NAME/build'
  1. 可用 crontab -l 查看、验证条目是否生效。

四 关键注意事项与排错

  • 时区一致性:确保 Jenkins 系统时区与业务时区一致,避免定时偏移。
  • 避免重叠:对耗时任务,在任务配置中勾选Do not allow concurrent builds,或在 Jenkinsfile 使用 lock 等策略。
  • 表达式校验:优先使用 H 做抖动,降低“雪崩效应”;界面右侧 “?” 可帮助校验。
  • 权限与安全:API 方式建议使用专用账号 + Token,并限制来源 IP;避免在脚本中明文存放凭据。
  • 日志与验证:先在命令行手动执行 curl 验证触发是否成功,再交由 cron;在 Jenkins 构建历史系统日志排查未触发原因。

0