定时任务
比如,每天凌晨1点自动备份数据库。
选择Jenkins作业,进入Configure > Build Triggers > Build periodically 填写cron语法。cron是类Unix的操作系统下的基于时间的任务管理系统。
# 格式
# ┌──分(0 - 59)
# │ ┌──时(0 - 23)
# │ │ ┌──日(1 - 31)
# │ │ │ ┌─月(1 - 12)
# │ │ │ │ ┌─星期(0 - 6,表示从周日到周六)
# │ │ │ │ │
# * * * *
0 1 * * * # 每日 01:00
1 * * * * # 每一分钟都执行
新建Item-设置定时
1.名称:ceshi-job
2.选择Freestyle project
3.保存
4.进入configuration > 构建触发器 > Build periodically 填写cron语法。
这里我填写 * * * * * 让他每分钟执行一次
5.进入configuration > Build Steps > 下拉选择Execute Shell
添加任务为echo "hello world"
保存,等待1分钟,即可
从外部触发Jenkins任务
安装 Strict Crumb Issue 插件
进入Manage Jenkins > Manage Plugins > Available Tab
- 在filter框内输入
Crumb
,找到Strict Crumb Issue
,点击install - Restart Jenkins when installation is complete and no jobs are running
- 安装完成后进入Installed Tab查看
启动 Strict Crumb Issue 插件
进入 Manage Jenkins > Configure Global Security > CSRF Protection.
- 选择 Strict Crumb Issuer.
- Click on Advanced.
- Uncheck the Check the session ID box.
- Save it.
从Bash脚本触发Jenkins任务
右键点击Build Now
,获取link: http://10.0.0.215:8080/job/hello_world/build?delay=0sec
这个URL可以用来触发Jenkins任务,但是我们需要一些额外的token在 Jenkins 中称为crumb,crumb包含了标识发送请求的用户的信息。
# 获取crumb
curl -u "jenkins:1234" 'http://10.0.0.215:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
# Jenkins-Crumb:dcaad0c0555a9369b2874d4a6d8870b9f55d34510e9b2d537ef4cbd905ff7825
# 保存crumb
crumb=$(curl -u "jenkins:1234" -s 'http://10.0.0.215:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u "jenkins:1234" -H "$crumb" -X POST http://10.0.0.215:8080/job/hello_world/build?delay=0sec
然后看构建,此时外部触发Jenkins就成功了