定期構建 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