Poll SCM
這章講一個很簡單卻很實用的東西 - SCM 輪詢
前面講了那麼多, 在加上這個功能, 基本上就已經全自動的完成一個 job 了!
這個功能會按照我們設定的時間間隔去輪詢我們的 git repo. 是否有新的 push, 假設有的話, job 就會自動 build 了!
所以我們整個 job 的流程會是 :
git push -> 觸發 job SCM poll 然後自動 build -> build 完以後封存檔案 -> 將所有結果跟封存檔案寄信給需要的人
是不是下一個 git push 之後就全自動了!!
1. 設定 Poll SCM
直接進到 job 的組態設定頁面 Build Triggers
區域就能看到選項了
這個格式很簡單, 其實就是對應到 分 時 日 月 星期
, 那當我們按下他旁邊的問號說明也都很清楚, 這裡直接把他複製過來
這個欄位大致跟 cron 的語法一樣 (再加上一點點調整)。 明確定義如下,每一行都該是由 TAB 或空白隔開的五個欄位:
分 時 日 月 星期
分 一小時內的第幾分鐘 (0-59)
時 一天內的哪一小時 (0-23)
日 一個月內的第幾天 (1-31)
月 月份 (1-12)
星期 星期幾 (0-7),0 跟 7 都代表星期日。
要在欄位裡指定多個值時,可以使用下列運算符號 (按照優先權排序):
'*' 代表所有可以用的數值。
'M-N' 代表範圍區間,例如 "1-5"
'M-N/X' 或 '/X' 代表區間內每隔 X 的數值,例如在「分」欄位裡的 "/15" 表示 "0,15,30,45",而 "1-6/2" 則是 "1,3,5"
'A,B,...,Z' 可以指定多個值,例如 "0,30" 或 "1,3,5" 為了在定期排程的時的系統負擔平均一點,可以使用 'H' 符號。 例如,大家常會把每天要執行的作業設成 "0 0 ",可是這樣子會讓事情都擠到每天午夜時分去。 相較之下,設定成 "H H " 也一樣每天都會跑一次,但是 Jenkins 會分散到不同時段執行。
'H' 符號也能指定範圍。就像 "H H(0-7) *" 代表子夜開始到早上 7:59 前的某個時間。
您可以把 'H' 符號想像成是在某個區間裡隨機挑出來的數值。 但事實上它只是作業名稱的 Hash 值,而不是隨機函式,所以對固定一個專案而言,這個數值是固定的。
空行,或是以 '#' 開頭的那幾行都會被當作註解忽略掉。
另外也支援 "@yearly" (每年), "@annually" (每季), "@monthly" (每月), "@weekly" (每週), "@daily" (每天), "@midnight" (半夜) 及 "@hourly" (每小時)。
範例
#每 1 分鐘 * * * * * #整點後第 5 分鐘 5 * * * *
我們直接把他設定 * * * * *
讓他 always 在等待 git push 的發生, 之後來看看 git push 後會發生甚麼事
2. 看結果
當我們 push 以後, 他會直接 build, 我們可以從這裡看到是由 Poll SCM
觸發的
這樣就完成拉~
然而, 如果不想讓 server 負擔太大, 也可以把輪詢的時間在拉開一點, 例如 5 分鐘
*/5 * * * *
另外也有一個定時 build 的功能, 就留到以後有空再介紹拉~