ジェンキンスでジョブをスケジュールするにはどうすればよいですか?


284

定期的にスケジュールしたいJenkinsに新しいジョブを追加しました。

[ ジョブの構成]で、[定期的にビルドする]チェックボックスをオンにし、[ スケジュール]テキストフィールドに式を追加しました。

15 13 * * *

ただし、スケジュールされた時間には実行されません。

ジョブをスケジュールするのは正しい手順ですか?

ここに画像の説明を入力してください

ジョブは午前4時20分に実行されるはずですが、実行されていません。


動作するか動作しないか?私の記憶が正しければ、あなたのcronは「毎日13:15に」と言っています。そしてはい:私はこれを定期的なビルドをスケジュールする正しい方法と考えています。
Fildor 2012

1
多分これはあなたを助けるでしょう:en.wikipedia.org/wiki/Cron#CRON_expression-私はセドリックがすでにそれをリンクしているのを見ます...多分あなたは私たちに、意図された期間は何であるか教えてください?
Fildor 2012

1
参考までに、RHSの青い疑問符は、可能な値の適切な説明を示しています
devstopfix

ここで自動生成に優れたウェブページがある- > crontab-generator.org
ファビアン・カラスコ

回答:


506

スケジュール期間を設定することにより、15 13 * * *Jenkinsに、毎年、毎月、毎日13日の15分にビルドをスケジュールするように指示します。

Jenkinsはcron式を使用しました。さまざまなフィールドは次のとおりです。

  1. MINUTES 1時間の分(0-59)
  2. HOURS 1日の時間(0〜23)
  3. DAYMONTH月の日(1-31)
  4. MONTH年の月(1-12)
  5. DAYWEEK曜日(0〜7)。0と7は日曜日です。

5分ごとにビルドをスケジュールする場合は、これで十分です。 */5 * * * *

毎日8時にビルドをスケジュールする場合は、これで十分です。 0 8 * * *

過去のいくつかのバージョン(2014)では、Jenkinsに新しいパラメーターがありますHJenkinsコードドキュメントから抽出):

定期的にスケジュールされたタスクがシステムに均等な負荷をかけることができるようにするには、H可能な限りシンボル(「ハッシュ」)を使用する必要があります。

たとえば、0 0 * * *毎日12個のジョブを使用すると、真夜中に大きなスパイクが発生します。対照的に、を使用H H * * *すると、各ジョブが1日に1回実行されますが、すべてが同時に実行されるわけではなく、限られたリソースを使用するほうが適切です。

次の点にも注意してください。

H記号は範囲にわたるランダムな値と考えることができますが、それは実際には値が任意のプロジェクトのために安定しているように、ジョブ名のハッシュではなく、ランダム関数です。

「H」の使用例


5
6時間ごとに定期的にビルドする方法です。い* */6 * * *動作しますか?
2013年

1
@ѕтƒ:はい、6時間ごとにビルドが開始されます
セドリックジュリアン

31
「* / 5 * * * *」ではなく「H / 5 * * * *」を使用して負荷を均等に分散させる
friederbluemle

1
あなたはHの範囲を制限したい場合は、1と3の例の数値を選択する例えばH(1-3)を使用することができHH(1-3)* * *午前1時と午前3時間を一度に実行するだろう
AndyClaw

16
イライラして、いつもドキュメントを参照しなければ、これらの表現を単に把握できない何かが私の脳にあるようです。
スキルM2

34

Jenkinsでは、改行で区切って複数回設定できます。

毎日午前7時にビルドする必要がある場合、および毎週日曜日の午後4時にビルドする必要がある場合は、以下が適切に機能します。

H 7 * * *

H 16 * * 0

1
H(0-0)6 * * 1(月曜日の午前6時に実行される場合)、H(0-0)16 * * 0(日曜日の午後4時)。平野H 16を実行して、あなたはH(0-0)16を使用する必要があります(1600 /午後4時に実行されません)....
AKS

2
@ArunSangalの代わりに、H(0-0)単に使用0する利点を使用Hできます。すべてのジョブが正確に同時に実行されるのではなく、「次に利用可能なタイムスロット」を取得しようとします
derHugo


26

形式は次のとおりです。

MINUTE(0〜59)、HOUR(0〜23)、DAY(1〜31)、MONTH(1〜12)、曜日(0〜6)

値の代わりに、ハッシュという単語を表す文字Hを挿入できます。プロジェクト名のハッシュコードに基づいてパラメーターを計算します。

これは、ビルドマシンで複数のプロジェクトを同時にビルドしている場合、たとえば毎日真夜中だとすると、それらすべてが同時にビルド実行を開始するわけではありません。各プロジェクトは、ハッシュコードに応じて異なる分から実行を開始します。

数値の間に値を指定することもできます。つまり、H(0,30)は、可能なハッシュが0〜30であるプロジェクトのハッシュコードを返します。

例:

  1. 月曜から金曜の午前08:30に毎日ビルドを開始します。30 08 * * 1-5

  2. 平日の毎日のビルドは、1日2回、ランチタイム12:00および真夜中00:00、日曜日から木曜日:00 0,12 * * 0-4

  3. プロジェクトのハッシュに応じて、午後4:00から午後4:59まで、または16:00 -16:59の間、毎日ビルドを開始します。H 16 * * 1-5

  4. 真夜中にビルドを開始:@midnightまたは毎週土曜日の真夜中にビルドを開始:59 23 * * 6

  5. 毎月1日、午前2時から02時30分の間:H(0,30)02 01 * *


1
いい説明。
vivek

10

Jenkinsでジョブをスケジュールする手順:

  1. ジョブ要件の「構成」をクリックします
  2. Build Triggers」までスクロールします-字幕
  3. 定期的ビルドのチェックボックスをクリックしてください
  4. たとえば、[スケジュール]フィールドにタイムスケジュールを追加します。 @midnight

ここに画像の説明を入力してください

:スケジュールフィールドの下には、最後と次の日時実行が表示されます。

Jenkinsは、ビルドをスケジュールするために事前定義されたエイリアスもサポートしています。

@hourly@daily@weekly@monthly@midnight

@hourly ->時間の初めに毎時間ビルドします-> 0 * * * *

@daily, @midnight ->毎日午前0時にビルドします-> 0 0 * * *

@weekly ->毎週日曜日の午前0時にビルドします-> 0 0 * * 0

@monthly ->毎月1日の午前0時にビルドします-> 0 0 1 * *


at-midnightはかなりクールです:) Jenkinsは@dailyを含む@で始まるかなりの数の特別な値を認識しているようです。最終的なリストへのリンクを投稿できますか?
chrisinmtown

@chrisinmtown、事前定義されたエイリアスリストが追加されました。うまくいけば、それはあなたにとって役に立ちます:)
Gavriel Cohen

7

5分ごとにcronジョブをスケジュールするには、次のようにcron設定を定義する必要があります。

*/5 * * * *

私は正確に午前8:00 ESTにジョブを実行したいので、私が作成したcron式は-00 08 * * *でいいですか?
Sangram Anand 2012

残念ながらそのポストでそれのスクリーンショットを添付し、動作していないところで、現在のEST時間で、すなわち、4:20 AM何か...それをテストしてい
Sangramアナンド

そのEST時刻はビルドサーバーのタイムゾーンと同じですか?
fduff 2012

はい、時間は同じですが、* / 5 * * * *(5mtごと)はうまく機能します。
Sangram Anand 2012

EST午前8時に正確にジョブを実行するには、次のようにする必要があります。H(0-0)8 * * *
AKS


2

JenkinsはスケジューリングにCron形式を使用します。詳細については、このリンクを参照してくださいhttps://en.wikipedia.org/wiki/Cron。もう1つ、Jenkinsは非常に便利なプレビューを提供します。スクリーンショットをご覧ください。 ここに画像の説明を入力してください

これがお役に立てば幸いです。ありがとう


これらの変更を適用する方法?
Balaji Boggaram Ramanarayan


-1

1時間待って特定のビルドがトリガーされるかどうかを確認したくない人のために:

ハッシュを取得するには、ここからハッシュをダウンロードできます。ブランチページで入力したとおりに完全なプロジェクト名を使用し、次のように印刷します。

System.out.println(Hash.from("sub/microservices/master"));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.