首页主机资讯Jenkins在Ubuntu中的任务调度

Jenkins在Ubuntu中的任务调度

时间2026-01-22 00:03:03发布访客分类主机资讯浏览1185
导读:Jenkins在Ubuntu中的任务调度实践 一 常用调度方式与适用场景 内置定时触发 Cron:在任务的“构建触发器”中使用“Build periodically”,适合固定周期(如每日构建、每周回归)。语法为标准的 Cron 表达式。...

Jenkins在Ubuntu中的任务调度实践

一 常用调度方式与适用场景

  • 内置定时触发 Cron:在任务的“构建触发器”中使用“Build periodically”,适合固定周期(如每日构建、每周回归)。语法为标准的 Cron 表达式。
  • 外部定时触发 crontab → Jenkins API:在 Ubuntu 上用 crontab 定时调用 Jenkins 的 Remote API 触发构建,适合与系统级维护窗口、外部编排工具集成。
  • 延迟与安静期 Quiet Period:在 Pipeline 或全局设置里配置 quietPeriod,用于避免构建风暴、错峰触发。
  • 事件驱动触发:如 GitHub/GitLab WebhookGeneric Webhook Trigger,适合代码推送即构建、合并请求验证等场景。
  • 分布式执行:将任务调度到 Ubuntu Agent/Slave 节点执行,适合需要特定操作系统或资源的作业。

二 内置定时触发 Cron

  • 在 Jenkins 任务配置中勾选“Build periodically”,填写 Cron 表达式(五字段:分 时 日 月 周)。例如:
    • 每天 09:00 构建:0 9 * * *
    • 工作日每 2 小时构建:0 */2 * * 1-5
    • 15 分钟构建:H/15 * * * *(使用 H 有助于分散负载)
  • 注意:Jenkins 的“构建历史”会按每次触发记录,合理设置“丢弃旧的构建”以控制磁盘占用。

三 外部定时触发 crontab 调用 Jenkins API

  • 思路:在 Ubuntu 上用 crontab 定时执行 curl 请求,调用 Jenkins 的远程构建接口。
  • 示例(无参数构建):
    # 每天 02:30 触发
    30 2 * * * curl -X POST http://JENKINS_URL/job/JOB_NAME/build --user USER:API_TOKEN
    
  • 示例(带参数构建,使用 CSRF 防护的 crumb):
    # 先获取 crumb(Jenkins 2.176+ 默认启用 CSRF)
    CRUMB=$(curl -s 'http://JENKINS_URL/crumbIssuer/api/json' \
      --user USER:API_TOKEN | jq -r '.crumb')
    
    # 触发构建并传参
    0 3 * * * curl -X POST http://JENKINS_URL/job/JOB_NAME/buildWithParameters \
      --user USER:API_TOKEN \
      -H "Jenkins-Crumb:$CRUMB" \
      --data-urlencode json='{
    "parameter": [{
    "name":"ENV","value":"prod"}
    ]}
    '
    
  • 建议:为安全起见使用 API Token 而非明文密码;如 Jenkins 前置 Nginx/Apache,确保代理转发头部正确(特别是 X-Forwarded-For/Host)。

四 延迟与安静期 Quiet Period

  • 全局安静期:进入 Manage Jenkins → Configure System → Quiet period,设置全局等待秒数,缓解短时间内的批量触发。
  • Job 级安静期:在 Pipeline 中使用 options { quietPeriod(60) } 为单个任务设置。
  • 触发时延迟:通过 API 在发起构建时传入延迟参数(示例为 0 秒):
    curl -X POST http://JENKINS_URL/job/JOB_NAME/build \
      --user USER:API_TOKEN \
      --data-urlencode json='{
    "parameter": [{
    "name":"delay","value":"0sec"}
    ]}
        '
    
  • 适用场景:夜间批量变更、依赖服务尚未就绪时的错峰触发、避免“提交洪峰”导致的排队与失败。

五 事件驱动与分布式执行

  • 事件驱动
    • 在代码托管平台配置 Webhook,Jenkins 安装 GitHub/GitLabGeneric Webhook Trigger 插件即可在推送、合并请求等事件发生时自动触发。
    • 示例:Generic Webhook Trigger 可在 Jenkins 中解析 JSON 事件并提取分支、提交等信息,按需触发对应 Pipeline
  • 分布式执行
    • Manage Jenkins → Nodes 配置 Ubuntu Agent(标签如 ubuntu),在任务“Restrict where this project can be run”中指定标签,即可将构建调度到 Ubuntu 节点。
    • 适合需要 Linux 工具链、特定 内核/架构 或访问内网资源的作业。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Jenkins在Ubuntu中的任务调度
本文地址: https://pptw.com/jishu/789273.html
Ubuntu部署Jenkins的网络设置 Ubuntu上Jenkins如何进行集群配置

游客 回复需填写必要信息