温馨提示×

Linux下Jenkins如何进行任务调度

小樊
32
2025-12-08 07:00:37
栏目: 智能运维

Linux下Jenkins任务调度实践

一 核心方式总览

  • 定时构建 Build periodically:在任务配置中按Cron语法定义固定频率,适合例行构建、报表生成等。
  • 轮询SCM Poll SCM:按Cron定期检查代码仓库变更,有更新则触发构建,适合无法在代码托管侧配置Webhook的环境。
  • 事件触发 Webhook:如安装Generic Webhook Trigger插件,由Git等外部系统推送事件触发构建,实时性强。
  • Pipeline 内调度:在Jenkinsfile的**triggers { cron(…) }**中定义计划任务,便于与代码一起版本化管理。
  • 延迟与安静期:通过Quiet period(安静期)quietPeriod选项设置触发后的等待时间,用于错峰或避免并发。
  • 远程执行:使用如Publish Over SSH插件在任务步骤中执行远程命令,实现跨机编排。

二 配置步骤与示例

  • 定时构建(Freestyle)
    1. 进入任务配置 → 构建触发器 → 勾选Build periodically
    2. 在“日程表”填入Cron表达式,例如:H/15 * * * *** 表示每隔15分钟执行一次;H 2 * * 1-5 表示每周一至周五02:00**执行。
    3. 字段含义:MINUTE(0–59) HOUR(0–23) DOM(1–31) MONTH(1–12) DOW(0–7,0和7均为周日);支持H(散列,均衡负载)、*/XM-NA,B等语法。
  • 轮询SCM(Freestyle)
    1. 构建触发器 → 勾选Poll SCM
    2. 示例:H/5 * * * *** 每5分钟**检查一次仓库,有变更即触发构建。
  • Webhook触发(事件驱动)
    1. 安装Generic Webhook Trigger插件并启用。
    2. 在任务配置中勾选Generic Webhook Trigger,配置Token与可选的Payload条件。
    3. 在代码托管(如GitHub/GitLab)设置Webhook URLhttp://JENKINS_URL/generic-webhook-trigger/invoke?token=YOUR_TOKEN
  • Pipeline内调度
    • 示例:
      pipeline {
        agent any
        triggers { cron('H 10 * * 1-5') } // 工作日 10:00
        stages {
          stage('Build') { steps { echo 'Building..' } }
        }
      }
      
  • 延迟与安静期
    • 全局:管理界面 → Configure SystemQuiet period(秒),对所有未设置项目生效。
    • 项目级(Pipeline):在**options { quietPeriod(0) }**中设置,覆盖全局。
  • 远程执行(跨机)
    1. 安装Publish Over SSH插件;管理界面 → Configure System → 配置SSH Servers(主机、端口、凭据)。
    2. 任务配置 → 构建步骤Send files or execute commands over SSH → 填写Exec command

三 Cron语法与常用示例

  • 语法字段:MINUTE HOUR DOM MONTH DOW(支持H散列、*/XM-NA,B)。
  • 示例
    • *0 2 * * :每天02:00执行。
    • *H/15 * * * :每隔15分钟执行一次(分散负载)。
    • H 10 * * 1-5:工作日10:00执行。
    • 0 10,16 * * :每天10:0016:00*各执行一次。

四 最佳实践与排错要点

  • 使用H(如H H(0-7) * * 1-5)分散在整点内的触发时刻,避免“雪崩效应”。
  • 需要“有变更才构建”用Poll SCM;能配置事件回调时优先Webhook,减少空轮询。
  • 跨机任务建议用Publish Over SSHJenkins Agent分布式执行,提升吞吐与隔离性。
  • 控制并发与顺序:结合Quiet periodThrottle buildsLockable Resources插件,避免资源竞争。
  • 时区问题:Jenkins Web UI中设置系统时区(如Asia/Shanghai),确保计划任务按预期时间触发。
  • 日志与诊断:查看系统管理 → 系统日志项目 → 构建历史 → 控制台输出;必要时开启Build after save验证表达式。

0