定期构建 vs 轮询SCM
点击配置
查看构建触发器章节,查看定时构建和轮询和SCM两种方式触发项目构建。
定时构建
定时构建就是无论怎样,一个周期触发一次构建。这种方式会导致大量计算资源浪费。会导致jenkins负载线性增高。
轮询SCM
一种更好的方式是让jenkins轮询git远程仓库,这里的日程表就是配置轮询的频率。下图是每10分钟(这种方式我也无法理解)轮询一次,假如远程仓库有最新提交,构建任务才会触发。一般使用正规语法,后面会讲。
轮询语法
# 分钟 小时 每月几号 月份 每周周几
MINUTE HOUR DOM MONTH DOW
*
代表匹配任何值,比如* * * * *是分钟轮询一次。
- MINUTE 分钟 (0–59)
- HOUR 小时(0–23)
- DOM(day of the month) 每月几号 (1–31)
- MONTH 月份 (1–12)
- DOW(day of week) 周几 (0–7) 其中 0 和 7 是星期天.
有些骚一点的语法,可以尝试下:
-
表示范围
比如DOW字段可以使用1-5
代表除了周末。 -
间隔
MINUTE字段*/5
代表每隔5分钟。 -
快捷特殊值
“@yearly”, “@annually”, “@monthly”, “@weekly”,
“@daily”, “@midnight”, and “@hourly”.
手动触发
手动触发就是你发送一条http请求就可以触发项目构建了。
- 首先要知道管理员的账号密码,然后在这里设置token
- 然后使用curl和get请求jenkins的http接口
- 使用脚本请求
这里是鄙人的小脚本,怎么使用的呢?
第一个参数传你的项目名,第二参数传token,第三个参数传用户账号和密码,用:
隔开。比如:
bash manual-remote-trigger.sh simpe-proof oneslide oneslide:icywater
脚本内容如下:
function check_curl(){
curl --version > /dev/null
if test $? -ne 0
then
echo "you need curl installed"
return 1
fi
}
check_curl
if [ $? -eq 1 ]
then
exit 1
fi
PROJECT_NAME=$1
JENKINS_URL=http://192.168.3.213:8080
PROJECT_BUILD_PATH=job/$PROJECT_NAME/build
echo "request url:" $JENKINS_URL/$PROJECT_BUILD_PATH
if [ ! -z $2 ]
then
echo "using token"
curl -u $3 $JENKINS_URL/$PROJECT_BUILD_PATH?token=$2
else
curl $JENKINS_URL/$PROJECT_BUILD_PATH
fi
- 直接请求
摆脱一切花里胡哨,直接请求也可以:
curl -u username:password \
$jenkins_url/job/$project_name/build?token=$token