Ubuntu Jenkins任务调度管理方法
这是Jenkins最常用的任务调度方式,适用于Freestyle项目或Pipeline项目。操作步骤如下:
http://<your_server_ip>:8080,使用管理员账号登录。0 0 1 * * *:每天凌晨1点执行;0 * * * * *:每小时整点执行;H H(9-17)/2 * * 1-5:周一至周五9:00-17:00之间,每隔2小时执行一次(H表示随机分钟,避免任务同时启动)。若项目采用Pipeline as Code模式,可直接在Pipeline脚本中定义定时规则。示例如下:
pipeline {
agent any
triggers {
cron('H 10 * * 1-5') // 每周一到周五上午10点执行(`H`表示随机分钟,减少并发冲突)
}
stages {
stage('Build') {
steps {
echo 'Building the project...'
// 添加构建步骤(如mvn clean package)
}
}
stage('Test') {
steps {
echo 'Running tests...'
// 添加测试步骤(如mvn test)
}
}
}
}
通过triggers块中的cron语法,可直接将定时调度嵌入Pipeline代码,实现版本控制与调度逻辑的统一。
若需要在Jenkins中调度远程Ubuntu服务器的命令(如备份、部署),可使用SSH插件(需提前安装):
/home/user/backup.sh)。若需要动态调整任务启动时间(如延迟执行),可通过Jenkins CLI或API实现:
wget http://<your_server_ip>:8080/jnlpJars/jenkins-cli.jar),执行以下命令延迟0秒触发任务:java -jar jenkins-cli.jar -s http://<your_server_ip>:8080/ build <job_name> --username <your_username> --password <your_password>
delay参数(单位:秒):curl -X POST "http://<your_server_ip>:8080/job/<job_name>/build" \
--user <your_username>:<your_password> \
--data-urlencode json='{"parameter": [{"name":"delay", "value":"0sec"}]}'
这种方式适用于需要根据外部事件(如代码提交、监控报警)动态触发任务的场景。
0 2 * * *对应Jenkins的0 0 2 * * *(每天凌晨2点执行)。quietPeriod参数(Pipeline中设置options { quietPeriod(0) })或系统全局设置(“Manage Jenkins”→“Configure System”→“Quiet period”)避免并发执行。crontab -e添加0 2 * * * curl http://localhost:8080/job/your_job/build),需确保Jenkins服务正在运行(systemctl status jenkins)且网络可达。