Jenkins 的排程是用 Cron 的格式來寫的,一直以來對 Cron 不太熟悉,趁這個機會了解一下
Cron 的標記為 5 個區塊的數值 * * * * *
由左到右分別是 分鐘 小時 日 月 星期
而每個區塊的資料又能放上特定的字元做特殊用途(以下皆以分鐘區塊解釋)
Symbol 1: H 即為 hash 一個 random 值,為 0- 59 任一隨機值
Symbol 2: * 各種可能的值,若是在分鐘的區塊則是 0-59
Symbol 3: M-N 代表的是數值 M 到 N 的範圍 10-23 代表 10 分鐘到 23 分鐘
Symbol 4: */X 在分鐘的區塊則是每 X 分鐘執行一次
Symbol 5: M-N/X 再往下結合 M-N, 以 9-17/2為例,則為 9 點到 17點,每兩小時執行一次
以下是 jenkins 官方的例子
# every fifteen minutes (perhaps at :07, :22, :37, :52)
每 15 分鐘 random 執行,比較需要注意的是挑到隨機的一個值後,下一個值就會是直接再加 15 分鐘接著執行
官方會比較建議使用 H (hash) 來執行的原因是因為如果大多數的 jobs 都是設定成 0 0 * * * 的話,凌晨的時間會非常的繁忙
所以使用 hash 的方式執行可以盡量避開這一類的問題
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
每小時的 0 - 29 分鐘裡,每 10 分鐘會 random 執行一次,可參考 symbol 5
H(0-29)/10 * * * *
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 4:45 PM every weekday.
星期一至星期五 每天 9:45 - 16:45 的時間裡每 2 小時執行一次, 9:45, 11:45, 14:45, 16:45
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 4 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
星期一至星期五 每天 9 點到 16 點 的時間裡每 2 小時 random 執行一次,也許是 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
1 - 11 月(除了 12 月之外),每月的 1號, 15號 會 random 執行一次(什麼樣的需求會這樣執行)
H H 1,15 1-11 *
自己比較常用的排程設定
1. 每 15 分鐘 random 測試 api 是否正常運作
H/15 * * * *
2. 每星期一至星期五的 10 點執行某 job
0 10 * * 1-5