web-dev-qa-db-ja.com

ジェンキンスは定期的にビルド-スケジュール

15分ごとに定期的にビルドすることを検討しています。私はオンラインで見て、次のスケジュールを使用しています:*/15 * * * *

Jenkinsは、H/15 * * * *ではなく*/15 * * * *を使用して負荷を均等に分散するように指示しています。

誰かが*の代わりにHを使用することの違いを教えてもらえますか?

8
Cameron Brown

はい。 ビルドトリガーから定期的にビルドスケジュール→  インラインヘルプ:

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

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

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

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

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

さらに、_@yearly_、_@annually_、_@monthly_、_@weekly_、_@daily_、_@midnight_、および_@hourly_は、便利なエイリアスとしてサポートされています。これらはハッシュシステムを使用して自動バランシングを行います。たとえば、_@hourly_は_H * * * *_と同じであり、時間内のいつでも意味する可能性があります。 _@midnight_は実際には12:00 AMから2:59 AMまでの時間を意味します。

例:

_# every fifteen minutes (perhaps at :07, :22, :37, :52)
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
# once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H 9-16/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
_
16
Avihoo Mamka