Jenkins

[Jenkins] ビルドトリガ(定期的に実行)設定についてのまとめ

More than 1 year has passed since last update.

文法

ビルドトリガの基本的な文法はcronを参考にすれば良いと思います。
crontab - Wikipedia
cronでは最後に実行コマンドがつきますが、Jenkinsでは当然必要ありません。

+------------ 分 (0 - 59で指定もできるが、他ジョブでずれる可能性が高いため、H と指定を推奨)
| +---------- 時 (0 - 23)
| | +-------- 日 (1 - 31)
| | | +------ 月 (1 - 12)
| | | | +---- 曜日 (0 - 6) (日曜日=0)
| | | | |
H * * * *

Jenkins本体でのヘルプとしては以下のようなメッセージとなっています (v2.0)

この項目は、クーロンの書式に従います(多少違いはありますが)。 具体的には、各行はTABかスペースで区切った5つの項目から成ります。
MINUTE HOUR DOM MONTH DOW
MINUTE  分 (0-59)。
HOUR    時 (0-23)。
DOM 日 (1-31)。
MONTH   月 (1-12)。
DOW 曜日 (0-7) 0と7は日曜日。
1つの項目に複数の値を設定するには、次の演算子を使用できます。優先度の順に、

'*'は、全ての有効な値を指定します。
'M-N'は、"1-5"のような範囲を指定します。
'M-N/X'や'*/X'は、例えば、分の項目で"0,15,30,45"の代わりに"*/15"を、 "1,3,5"の代わりに"1-6/2"のように、その範囲内でXだけスキップします。
'A,B,...,Z'は、"0,30"や"1,3,5"のように複数の値を指定します。
定期的にスケジュールされたタスクがシステムに負荷をかける場合に対応できるように、 H (ハッシュを表す)を使用するべきです。 例えば、たくさんの日次ジョブに0 0 * * *を使用すると、真夜中にシステムへの負荷が急上昇します。 それに対して、H H * * *を使用すると、1日1回各ジョブが実行されますが、 すべてのジョブが同時に実行するのではなく、限られたリソースをより有効に使用します。

H は範囲とともに使用することもできます。 例えば、H H(0-7) * * * はAM 00:00からAM 7:59までの間のいつかを表します。 また、インターバルとあわせて使用することもできます。

H は、ある範囲におけるランダムな値と考えることもできますが、 実際には、ランダム関数ではなく、ジョブ名のハッシュであり、特定のプロジェクトに対して一定の値を表すものです。

空行や'#'で始まる行はコメントとして無視されます。

さらに、'@yearly'(年に1回)、'@annually'(年に1回)、'@monthly'(月に1回)、'@weekly'(週に1回)、'@daily'(日に1回)、 '@midnight'(日に1回)、および'@hourly'(時間に1回)をサポートします。

例 
# 15分ごと (おそらく、7分、22分、37分、52分)
H/15 * * * *
# 0-30分の間で10分ごと (おそらく、4分、14分、24分の3回)
H(0-29)/10 * * * *
# 平日の9-16時の間で2時間ごと (おそらく 10:38、12:38 14:38 16:38)
H 9-16/2 * * 1-5
# 12月を除く毎月1日と15日に1回
H H 1,15 1-11 *

毎日 ◯◯時に実行

個別指定

毎日 12時に実行

H 12 * * *

複数指定

毎日 0時, 12時, 18時に実行

H 0,12,18 * * *

曜日を指定して実行

日曜の 0 始まりなので注意

平日のみ実行 (1-5)

平日 19時に実行

H 19 * * 1-5

休日のみ実行 (土曜 6, 日曜 0)

土日 19時に実行

H 19 * * 0,6

参考

Tea for Coding: Jenkinsの「定期的に実行」で地味に感動した