web-dev-qa-db-ja.com

ジェンキンスで毎時間ジョブをスケジュールする必要があります

ジェンキンスは初めてです。 1時間ごとにスケジュールする必要があるジョブがあります。

使ってます

* */1 * * * 

しかし、それは効果的に機能していません。

他の解決策を提供してください。

18
Ajay

Jenkinsは説明されているようにcron式を使用します here

1時間ごとにスケジュールするには、

0 * * * *

その後、ジョブは1時間ごとに実行されます(07:00、08:00、09:00など)

[〜#〜]更新[〜#〜]

元の構成、構文の説明として

* */1 * * *

分ごとにジョブを実行します。

更新2

コメントで要求されているように、ここでは3時間ごとにスケジュールするための構文

0 */3 * * *

構文*/nは、ジョブがn時間ごとにスケジュールされることを意味します

32
masegaloeh

ジェンキンスはこのように提案しています:

H * * * *
16
Ruby232

私はこれが古いスレッドであることを知っていますが、どうやら人々はまだここに上陸しているので、答えています。

トップの回答 はもう使用しないでください。

Jenkinsは値Hを導入しました。

このフィールドはcronの構文に従います(わずかな違いがあります)。具体的には、各行は、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は値の範囲を指定します
  • M-N/Xまたは*/Xは、指定された範囲または有効範囲全体をXの間隔でステップします。
  • A,B,...,Zは複数の値を列挙します

定期的にスケジュールされたタスクがシステムに均等な負荷をかけることができるようにするには、記号H(「ハッシュ」)を可能な限り使用する必要があります。たとえば、毎日0個のジョブに0 0 * * *を使用すると、真夜中に大きなスパイクが発生します。対照的に、H H * * *を使用すると、各ジョブが1日に1回実行されますが、すべてが同時に実行されるわけではなく、限られたリソースを使用するほうが適切です。

H記号は範囲で使用できます。たとえば、H H(0-7) * * *は、午前12時(真夜中)から午前7時59分までの時間を意味します。Hでステップ間隔を使用することもできます。範囲なし。

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

日のフィールドでは、月の長さが変動するため、*/3やH/3などの短いサイクルがほとんどの月の終わり近くで一貫して機能しないことに注意してください。たとえば、*/3は長い月の1日、4日、…31日目に実行され、次に翌月の翌日に再び実行されます。ハッシュは常に1〜28の範囲で選択されるため、H/3は実行の間に月末に3〜6日のギャップを生成します。 (サイクルが長くなると、長さに一貫性がなくなりますが、その影響は比較的目立たなくなります。)

したがって、1時間に1回ビルドするための正しい答えは

H * * * *

3時間ごと

H H/3 * * *

*Hの違いは、

  • *[〜#〜] every [〜#〜]に変換されます
  • H[〜#〜] any [〜#〜]に変換されます

したがって、たとえば.

* * * * *

変換:毎分、毎時、毎日、毎月、何曜日かは関係ありません。

H * * * *

変換:ビルド1回毎時(x)、正確な分は関係ありません(x:00とxの間の任意の分にすることができます: 59)

H H * * *

変換:ビルド1回、毎日何時でもかまいません(00:00から23:59の間の任意の分と任意の時間にすることができます) )


ハードコードされた時間値の代わりにHを使用するほうがよい理由は、以前と同様に説明されています

100個のジョブが

0 0 * * *

それらはすべて同時に開始しようとし、たとえば、真夜中に多くのポーリングとプルトラフィックを引き起こします。

代わりにそれらをすべて設定すると

H H * * *

これらはすべて1日に1回作成されますが、すべて同時にではなく、1日に配布されます。


スケジュールの時間範囲

時間範囲を使用することで、スケジュールをより適切に計画できます。

H H(18-23) * * *

すべてのジョブは、毎日18:00から23:59の間のいつでも作成されます。


午前0時をまたぐ時間範囲をスケジュールする

深夜にまたがるジョブをスケジュールすることも可能です。午後19:00から午前5:00の間に構築します。

しかしcronは通常これを許可しないため、シフトタイムゾーンを使用してトリックを使用できます。

例えば。私はGMT + 1のタイムゾーンMEZに住んでおり、午後19:00から午前5:00までの間にすべてのジョブを構築したいと考えています。そのために、次のコマンドを使用して完全なタイムゾーンを5時間シフトします

TZ=Etc/GMT+6

14:00(-> +5 = 19:00 pm)で始まり23:59(-> +5 = 4:59 am)で終わる時間にシフト範囲を使用するよりも

H H(14-23) * * *
11
derHugo