Jenkins'te işleri nasıl planlayabilirim?


284

Jenkins'e periyodik olarak programlamak istediğim yeni bir iş ekledim.

Gönderen yapılandır işi , ben "Yapı Periyodik" onay kutusunu kontrol ediyorum ve zamanlama metin alanına ifadesini ekledi:

15 13 * * *

Ancak planlanan zamanda çalışmaz.

İş planlamak doğru prosedür mü?

Resim açıklamasını buraya girin

İş 04: 20'de çalışmalıdır, ancak çalışmaz.


Çalışıyor mu yoksa çalışmıyor mu? Doğru hatırlarsam cronunuz "Her Gün 13:15" der. Ve evet: Bunu periyodik yapıları programlamanın doğru yolu olarak görüyorum.
Fildor

1
Belki bu size yardımcı olacaktır: en.wikipedia.org/wiki/Cron#CRON_expression - Cedric'in zaten bağlantılı olduğunu görüyorum ... Belki bize söylemelisiniz, amaçlanan dönem nedir?
Fildor

1
Referans olarak, RHS üzerindeki mavi soru işareti olası değerlerin iyi bir açıklamasını ortaya koymaktadır
devstopfix

Yanıtlar:


506

Programlama dönemini ayarlayarak 15 13 * * *Jenkins'e, yapıyı her yılın her ayının her gününü, günün 13. saatinin 15. dakikasında planlamasını söyleyin.

Jenkins bir cron ifadesi kullandı ve farklı alanlar:

  1. DAKİKA Dakikada bir saat (0-59)
  2. Bir günde SAAT Saatler (0-23)
  3. DAYMONTH Bir aydaki gün (1-31)
  4. MONTH Bir yıldaki ay (1-12)
  5. DAYWEEK 0 ve 7'nin pazar olduğu haftanın günü (0-7)

Derlemenizi her 5 dakikada bir planlamak istiyorsanız, bu işi yapacaktır: */5 * * * *

Eğer yapınızı her gün saat 8'de planlamak istiyorsanız, bu işi yapacaktır: 0 8 * * *

Son birkaç sürümde (2014) Jenkins'in yeni bir parametresi var H( Jenkins kodu belgelerinden alıntı ):

Periyodik olarak zamanlanmış görevlerin sistemde eşit yük üretmesine izin vermek Hiçin mümkün olan her yerde (“karma” sembolü ) kullanılmalıdır.

Örneğin, 0 0 * * *bir düzine günlük iş için kullanmak gece yarısı büyük bir artışa neden olur. Buna karşılık, kullanımı H H * * *her işi günde bir kez yürütür, ancak aynı anda değil, sınırlı kaynakları kullanmak daha iyidir.

Ayrıca şunu da unutmayın:

HSembolü aralığında rasgele değer olarak düşünülebilir, ama aslında değeri herhangi bir proje için kararlı kalır böylece, iş adı değil rastgele fonksiyon bir karma olduğunu.

'H' kullanımına daha fazla örnek


5
Yani her 6 saatte bir periyodik olarak nasıl inşa edilir. mu* */6 * * * ?
ѕтƒ

1
@ ѕтƒ: evet, her 6 saatte bir yapı başlatacak
Cédric Julien

31
'* / 5 * * * *' yerine 'H / 5 * * * *' kullanarak yükü eşit olarak
dağıtın

1
Eğer Örnek HH (1-3) olur 1 ile 3 arasında bir sayı seçmek için örneğin H (1-3) kullanabilir H aralığını sınırlandırmak için * * * 1 am ve 3 am arasında bir kez çalıştırmak için
AndyClaw

16
Sinir bozucu bir şekilde, beynimde sürekli olarak dokümanlara başvurmak zorunda kalmadan bu ifadeleri kavrayamayan bir şey var gibi görünüyor.
Beceri M2

34

Jenkins satır sonları ile ayırarak birden çok kez ayar yapmanıza izin verir.

Her gün sabah 7'de, her Pazar 16: 00'da inşa etmek için ihtiyacınız varsa, aşağıda iyi çalışır.

H 7 * * *

H 16 * * 0

1
H (0-0) 6 * * 1 (Pazartesi 06: 00'da ET için), H (0-0) 16 * * 0 (Pazar günü 16: 00'da ET). H 16 düz koşuyor (1600/16: 00'da çalışmayacak), H (0-0) 16 kullanmalısınız ....
AKS

2
Yerine @ArunSangal H(0-0)size basitçe kullanabilirsiniz 0kullanmanın avantajı Htüm İşler tam olarak aynı anda çalıştırmayı denediğinizde ziyade "bir sonraki uygun zaman aralığını" almaya çalışacağım olmasıdır
derHugo

28

*/5 * * * * her 5 dakikada bir

5 * * * * her saatin 5. dakikası anlamına gelir


26

Biçim aşağıdaki gibidir:

DAKİKA (0-59), SAAT (0-23), GÜN (1-31), AY (1-12), HAFTANIN GÜNÜ (0-6)

Değerlerden herhangi biri yerine Hash kelimesini temsil eden H harfi eklenebilir. Parametreyi proje adınızın karma koduna göre hesaplar.

Bu, aynı anda yapı makinenizde birkaç proje oluşturuyorsanız, diyelim ki her gün gece yarısı, hepsi aynı anda yapı uygulamalarına başlamıyorlar. Her proje, karma koduna bağlı olarak farklı bir dakikada yürütülmeye başlar.

Ayrıca, sayılar arasında olması gereken değeri de belirleyebilirsiniz; örneğin, H (0,30), olası sağlamaların 0-30 olduğu projenin karma kodunu döndürür.

Örnekler:

  1. Her gün 08: 30'da pazartesiden cumaya inşa etmeye başlayın: 30 08 * * 1-5

  2. Hafta içi her gün günde iki kez, öğlen 12:00 ve gece 00:00, Pazar-Perşembe günleri inşa edilir: 00 0,12 * * 0-4

  3. Her gün öğleden sonra saat 16: 00-16: 59 veya 16: 00-16: 59 saatleri arasında projenin karmasına bağlı olarak inşa etmeye başlayın: H 16 * * 1-5

  4. Gece yarısı inşa etmeye başlayın: @midnight veya gece yarısı, her Cumartesi inşa etmeye başlayın: 59 23 * * 6

  5. Her ayın ilk günü 02:00 - 02:30 arasında: H (0,30) 02 01 * *


1
güzel bir açıklama.
vivek

10

Jenkins'teki işleri planlamak için adımlar:

  1. iş gereksiniminin "Yapılandır" ı tıklayın
  2. " Oluşturma Tetikleyicileri " ne ilerleyin - altyazı
  3. Düzenli olarak CheckBox of Build'a tıklayın
  4. Zamanlama alanına zaman çizelgesi ekleyin, örneğin, @midnight

resim açıklamasını buraya girin

Not : zamanlama alanı altında, son ve sonraki tarih-saat çalışmasını görebilirsiniz.

Jenkins ayrıca derlemeyi planlamak için önceden tanımlanmış takma adları da destekler:

@hourly, @daily, @weekly, @monthly,@midnight

@hourly -> Her saat başında bir saat oluşturun -> 0 * * * *

@daily, @midnight -> Her gün gece yarısı inşa edin -> 0 0 * * *

@weekly -> Her hafta Pazar sabahı gece yarısı inşa edin -> 0 0 * * 0

@monthly -> Her ay ayın ilk gününün gece yarısında oluşturun -> 0 0 1 * *


gece yarısı oldukça havalı :) Jenkins @ @daily dahil olmak üzere birkaç özel değeri tanıdığı görülüyor. Kesin listeye bir bağlantı gönderebilir misiniz?
chrisinmtown

@chrisinmtown, önceden tanımlanmış takma adlar listesi eklendi, umarım sizin için yararlıdır :)
Gavriel Cohen

7

Her 5 dakikada bir cron işi zamanlamak için cron ayarlarını şu şekilde tanımlamanız gerekir:

*/5 * * * *

Ben tam olarak @ 8:00 AM EST işi çalıştırmak istiyorum böylece ben inşa cron ifade - 00 08 * * * bu iyi mi?
Sangram Anand

Ne yazık ki, çalışmıyor, yazıdaki ekran görüntüsünü
ekledi

sunucuda aynı zaman dilimi aynı EST zamanı?
fduff

evet zaman aynı, btw * / 5 * * * * (her 5mts) iyi çalışıyor.
Sangram Anand

İşi tam 08:00 EST'de çalıştırmak için şu şekilde yapmanız gerekir: H (0-0) 8 * * *
AKS


2

Jenkins zamanlamada Cron formatını kullanır. Daha fazla ayrıntı için bu bağlantıya başvurabilirsinizhttps: //en.wikipedia.org/wiki/Cron. Bir şey daha var, Jenkins bize çok yararlı bir önizleme sunuyor. Lütfen ekran görüntüsüne bir göz atın. resim açıklamasını buraya girin

Umarım bu yardımcı olur. Teşekkürler


bu değişiklikler nasıl uygulanır?
Balaji Boggaram Ramanarayan


-1

Belirli bir yapının tetiklenip tetiklenmediğini görmek için tam saati beklemek istemeyen herkes için:

Hash'i almak için, hasher'i buradan indirebilirsiniz . Şube sayfasında yazıldığı gibi tam proje adını kullanın ve şöyle yazdırın:

System.out.println(Hash.from("sub/microservices/master"));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.