温馨提示×

Ubuntu下Jenkins任务如何调度

小樊
61
2025-09-16 17:41:30
栏目: 智能运维

Ubuntu下Jenkins任务调度的主要方法

1. 通过Jenkins内置“Build periodically”功能调度(推荐)

这是Jenkins原生的定时任务配置方式,无需依赖系统级Cron,适合大多数场景。

  • 操作步骤
    ① 登录Jenkins控制面板,进入目标任务的配置页面;
    ② 找到“Build Triggers”(构建触发器)部分,勾选“Build periodically”(周期性构建);
    ③ 在“Schedule”输入框中输入Cron表达式(格式为秒 分 时 日 月 星期,共6字段),例如:
    • 0 10,16 * * *:每天上午10点和下午4点各执行一次;
    • H/15 * * * *:每隔15分钟执行一次(H表示随机分钟,避免并发冲突);
    • 0 2 * * 1-5:周一至周五凌晨2点执行。
      ④ 保存配置后,Jenkins会根据Cron表达式自动触发任务。

2. 使用Pipeline脚本定义定时任务

若任务采用Pipeline模式(推荐用于复杂流程),可直接在Pipeline脚本中通过triggers块配置定时触发。

  • 示例代码
    pipeline {
        agent any
        triggers {
            cron('H 10 * * 1-5') // 每周一到周五上午10点执行(H表示随机分钟)
        }
        stages {
            stage('Build') {
                steps {
                    echo 'Building the project...'
                }
            }
        }
    }
    
    保存脚本后,Pipeline会按照定义的时间规则自动运行。

3. 通过Ubuntu系统级Cron调用Jenkins任务

若需要在系统层面统一管理定时任务(如同时调度多个服务),可通过编辑系统Cron表(crontab)调用Jenkins的远程API触发任务。

  • 操作步骤
    ① 确保Jenkins服务运行正常(systemctl status jenkins),并获取任务对应的API Token(在任务配置→“Configure”→“API Token”中生成);
    ② 执行crontab -e命令编辑当前用户的Cron表;
    ③ 添加一行Cron任务,格式为:
    分 时 * * * /usr/bin/curl -X POST "http://<jenkins_server>:8080/job/<job_name>/build?token=<api_token>"
    
    示例(每天凌晨2点触发名为my_job的任务):
    0 2 * * * /usr/bin/curl -X POST "http://localhost:8080/job/my_job/build?token=my_api_token"
    
    ④ 保存后,Cron会定期调用Jenkins API启动任务。

4. 补充:通过CLI或Quiet Period优化调度

  • Jenkins CLI延迟触发:使用Jenkins远程CLI工具(jenkins-cli.jar),通过build命令的--delay参数设置任务启动前的等待时间(如--delay 0sec表示立即触发),适合需要动态调整延迟的场景;
  • Pipeline Quiet Period:在Pipeline的options块中添加quietPeriod参数(单位:秒),用于延迟任务的正式执行(如quietPeriod(30)表示30秒后启动),避免因频繁触发导致的资源竞争。

注意事项

  • 确保Jenkins服务处于运行状态(systemctl start jenkins);
  • 若通过HTTP访问Jenkins,需替换localhost为服务器IP或域名;
  • 对于远程Cron调用,需确保执行Cron的用户具有访问Jenkins的权限(如配置Jenkins用户凭证);
  • 复杂的调度需求(如跨时区、动态调整时间)建议使用Jenkins原生“Build periodically”或Pipeline脚本,避免依赖系统Cron的局限性。

0