阅读量:15
Ubuntu环境下Jenkins任务调度的常见方法
1. 使用Jenkins内置“Build periodically”功能(推荐)
这是Jenkins原生的定时任务配置方式,适用于大多数场景。操作步骤如下:
- 登录Jenkins控制面板,进入目标任务的配置页面(如“Freestyle project”类型任务)。
- 找到“Build Triggers”(构建触发器)部分,勾选**“Build periodically”**选项。
- 在“Schedule”输入框中,使用cron表达式定义调度规则(格式为
秒 分 时 日 月 星期,共6个字段)。例如:0 10,16 * * *:每天上午10点和下午4点各执行一次;H/15 * * * *:每隔15分钟执行一次(H表示随机分钟,避免任务同时启动);0 2 * * 1-5:周一至周五凌晨2点执行。
- 点击“Save”保存配置,Jenkins会根据cron表达式自动触发任务。
2. 通过Jenkins Pipeline定义定时任务
若使用Pipeline(流水线)模式,可直接在Pipeline脚本中通过triggers块配置定时任务。示例如下:
pipeline {
agent any // 指定执行节点
triggers {
cron('H 10 * * 1-5') // 每周一到周五上午10点执行(`H`表示随机分钟)
}
stages {
stage('Build') {
steps {
echo 'Building the project...'
// 这里添加具体的构建步骤(如git拉取、maven编译等)
}
}
}
}
- 创建Pipeline任务时,将上述脚本粘贴到“Pipeline script”文本框中,保存后Pipeline会按cron表达式自动触发。
3. 结合Ubuntu系统Cron作业触发Jenkins任务
通过Ubuntu系统的crontab工具,调用curl命令触发Jenkins任务的构建接口。步骤如下:
- 打开终端,输入
crontab -e编辑当前用户的Cron作业。 - 添加一行定时任务,格式为
分钟 小时 日 月 星期 命令,其中命令为curl调用Jenkins的构建接口。例如:0 2 * * * /usr/bin/curl -X POST http://localhost:8080/job/your-job-name/build?token=YOUR_TOKEN
(localhost:8080替换为Jenkins服务器IP或域名,your-job-name替换为任务名称,YOUR_TOKEN为Jenkins任务的API令牌,可在任务配置页面生成)
- 保存并退出编辑器(
Ctrl+O保存,Ctrl+X退出)。 - 验证Cron作业:输入
crontab -l查看已配置的定时任务,确保命令正确。
4. 使用SSH插件执行远程定时任务
若需要在Jenkins任务中调度远程Ubuntu服务器的命令,可通过SSH插件实现:
- 安装SSH插件:进入Jenkins“Manage Jenkins”→“Manage Plugins”,搜索“SSH Plugin”并安装。
- 配置SSH服务器:在Jenkins“Manage Jenkins”→“Manage Credentials”中,添加远程服务器的SSH凭据(用户名、私钥或密码)。
- 在任务配置页面,添加“Execute shell”构建步骤,输入要执行的远程命令(如
ssh user@remote-server "ls -l /tmp")。 - 结合“Build periodically”或其他调度方式,设置任务的执行时间。
注意事项
- cron表达式格式:Jenkins的cron表达式与Ubuntu系统cron略有差异(Jenkins少一个“年”字段),需注意区分。
- 权限问题:确保Cron作业或Jenkins用户有权限访问Jenkins服务器及目标资源(如代码仓库、远程服务器)。
- 日志监控:通过Jenkins任务的“Build History”查看调度执行结果,若任务未触发,检查Cron表达式、网络连接及Jenkins服务状态。