Jenkins'de her saat bir iş planlamanız gerekiyor


17

Jenkins için yeniyim. Her 1 saatte bir planlamam gereken bir işim var.

Ben kullanıyorum

* */1 * * * 

ama etkili bir şekilde çalışmıyor.

Lütfen başka bir çözüm sağlayın.


3
ne olduğunu açıklamalısınız "ama etkili bir şekilde çalışmıyor." anlamına geliyor. Ve dağıtım ve cronttab girişlerinizi ekleyin
Sathyajith Bhat

kullanın @hourlyveya0 * * * *
Renju Chandran chingath

Teşekkürler. Eğer her 3 saatte bir programlamak istersem sözdizimini belirtiniz.
Ajay

Kullanım: H / 60 * * * *
Eyal Sooliman

Yanıtlar:


32

Jenkins burada açıklandığı gibi cron ifadesini kullanır

Her saat programlamak için,

0 * * * *

Sonra işiniz her saat başı (07:00, 08:00, 09:00 vb.)

GÜNCELLEME

Orijinal yapılandırmanızın açıklaması olarak sözdizimi

* */1 * * *

dakikada bir iş yürütecek.

GÜNCELLEME 2

Yorumda istendiği gibi, burada her 3 saatte bir zamanlama sözdizimi

0 */3 * * *

Sözdizimi */n, işlerin her nsaat başı planlanacağı anlamına gelir


Cevabınız için teşekkürler.İyi çalışıyor. Ama işimin yürütülmesi bir saatten fazla sürüyor. Örneğin, bu işi her 3 saatte bir planlamak istersem sözdizimi ne olur. Lütfen paylaşın.
Ajay

Güncel cevabımı kontrol et :)
masegaloeh 08

@Ajay Bu cevap probleminiz için işe yarıyorsa, lütfen bu yanıtı kabul etmeyi düşünün :)
masegaloeh

14

Jenkins şu şekilde öneriyor:

H * * * *

2
1 yaşından büyük bir sorunun diğer cevaplarıyla aynı cevap.
JakeGould

Bu, başka bir yanıtı çoğaltır ve yeni içerik eklemez. Katkıda bulunacak yeni bir şeyiniz yoksa lütfen yanıt göndermeyin.
DavidPostill

4
Bu yaklaşımın avantajı, jenkinlerin görevleri kuyrukta yönetmesidir. Belki başka birisinin cevabı zaten vardı ama yine de faydalı. Yararlıysa neden bu kadar sert olmalısınız? 20 beğeni ile cevap o kadar iyi değil .... bah
juan Isaza

@JuanIsaza ile gitmek zorundayım. Bu bir kopya değil, aslında daha iyi bir cevaptır. Jenkins H, sabit kodlanmış değerlerin yerine kullanımını tercih etmeyi önermektedir
derHugo

9

Bunun eski bir konu olduğunu biliyorum ama cevaplıyorum çünkü görünüşe göre insanlar hala buraya iniyor.

En iyi cevap artık kullanılmamalıdır.

Jenkins bir değer sundu H.

Bu alan cron sözdizimini takip eder (küçük farklarla). Özellikle, her satır SEKME veya boşlukla ayrılmış 5 alandan oluşur:

DAKİKA SAAT DOM AY DOW

  • MINUTE Bir saat içinde dakika (0-59)
  • SAAT Günün saati (0–23)
  • DOM Ayın günü (1-31)
  • AY Ay (1–12)
  • DOW 0 ve 7'nin Pazar olduğu haftanın günü (0-7).

Bir alan için birden çok değer belirtmek üzere aşağıdaki işleçler kullanılabilir. Öncelik sırasına göre,

  • * tüm geçerli değerleri belirtir
  • M-N bir değer aralığı belirtir
  • M-N/Xveya */Xbelirtilen aralık veya tüm geçerli aralık boyunca X aralıklarına göre adımlar
  • A,B,...,Z birden çok değer sıralar

Periyodik olarak zamanlanan görevlerin sistemde eşit yük üretmesine izin vermek için, mümkün olan her yerde H sembolü (“karma” için) kullanılmalıdır. Örneğin, bir düzine günlük iş için 0 0 * * * kullanılması gece yarısı büyük bir artışa neden olur. Buna karşılık, HH * * * kullanımı her işi günde bir kez yürütür, ancak aynı anda değil, sınırlı kaynakları kullanmak daha iyidir.

H sembolü bir aralık ile kullanılabilir. Örneğin, SS (0-7) * * *, 12:00 (gece yarısı) ile 07:59 arasında bir süre anlamına gelir. Adım aralıklarını H ile, aralıklı veya aralıksız da kullanabilirsiniz.

H sembolü, bir aralık üzerinde rastgele bir değer olarak düşünülebilir, ancak aslında rastgele bir işlev değil, iş adının bir karmasıdır, böylece değer herhangi bir proje için sabit kalır.

Ayın günü alanında, * / 3 veya H / 3 gibi kısa döngülerin, değişken ay uzunlukları nedeniyle çoğu ayın sonuna kadar tutarlı bir şekilde çalışmayacağını unutmayın. Örneğin, * / 3 uzun bir ayın 1., 4.,… 31. günlerinde, sonra tekrar gelecek ayın ertesi günü çalışır. Karmalar her zaman 1-28 aralığında seçilir, bu nedenle H / 3 bir ayın sonunda 3 ila 6 gün arasında bir boşluk oluşturur. (Daha uzun döngüler de tutarsız uzunluklara sahip olacaktır, ancak etki nispeten daha az fark edilebilir.)

Yani saatte bir inşa etmek için doğru cevap

H * * * *

her 3 saatte bir

H H/3 * * *

Arasındaki fark *ve Haynı zamanda şu şekilde açıklanabilir

  • *çevirir EVERY
  • HHERHANGİ BİR'e çevirir

Yani örn.

* * * * *

şu anlama gelir: Her dakika, her saat, ayın her günü, her ay, haftanın hangi günü olduğu önemli değil.

H * * * *

şöyle açıklanabilir: Build'a kez her saat (x), (x arasındaki her an gelebilir: 00 ve x: 59) daha ne tam dakikalık fark etmez

H H * * *

şu anlama gelir: Günde bir kez oluşturun , saatin ne olduğu önemli değil (00:00 ile 23:59 arasında herhangi bir dakika ve saat olabilir)


Sabit Hkodlanmış zaman değerleri yerine kullanmayı tercih etmenizin nedeni de önceki gibi açıklanmaktadır

İle yapılandırılmış 100 işiniz varsa

0 0 * * *

hepsi aynı anda başlamaya çalışacaklar, örneğin gece yarısı çok fazla anket ve trafik çekecekler.

Bunların hepsi ile yapılandırılmışsa

H H * * *

hepsi günde bir kez inşa edilecek, ama aynı anda değil ama gün içinde dağıtılacak.


Zaman aralığı planla

Zaman aralıklarını kullanarak schdedule'yi daha iyi planlayabilirsiniz.

H H(18-23) * * *

Tüm işler her gün saat 18: 00-23: 59 arasında yapılacaktır.


Zaman aralığından gece yarısına geçiş planlayın

Gece yarısı geçecek işleri planlamak da mümkündür, örneğin 19: 00-17: 00 arasında inşa etmek.

Ancak cron genellikle buna izin vermediğinden, bir saat dilimi kullanarak bir hile kullanabilirsiniz.

Örneğin, GMT + 1 olan saat dilimi MEZ'de yaşıyorum ve tüm işleri 19:00 ile 05:00 arasında inşa etmek istiyorum. Bunu yapmak için saat dilimimi tam 5 saat kaydırıyorum

TZ=Etc/GMT+6

Daha sonra saat 14:00 (-> +5 = 19:00 pm) ile başlayan ve 23:59 (-> +5 = 4:59) ile biten saatler için bir vites aralığı kullanıyorum

H H(14-23) * * *

-1
* */1 * * *

doğru, her saat çalışıyor

H işlevini kullanmayı deneyin, böylece tüm işler svn'ye aynı anda yok olmaz

H H/1 * * *

Büyü yapmalı. İşin bitmesi daha uzun sürüyorsa veya derleme tetikleyici işlevi yapıyorsanız. Ya zaman artırın ya da önceki derleme bitene kadar derlemeyi durdurmak için jenkins eklentisini kullanın.

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin


Birincisi her dakika 01:00 ile 02:00 arasında çalışır, değil mi?
Eric Wang

@EricWang: Hayır * * * * *. Her dakika => koşmakla aynıdır . Belirli bir aralıkta koşmak için * 1-2 * * *< gibi kullanın - bu her dakika 01:00 ile 1:59 arasında çalışır
derHugo

@derHugo Yani * * 1-2 * *?
Eric Wang

1
@EricWang Hayır demek istiyorum * 1-2 * * *. İlk pozisyon, Minute of ourikincisi hour of dayüçüncü day of month, dördüncü month of yearve beşinci içindir day of week(özel durumlarda da altıncıya izin verir year). Satır Yani * * 1-2 * *"Her dakika, her saat, her ayın birinci ve ikinci günü ve haftanın her günü çevirir.
derHugo

1
Bu cevabın yazarının kaçırdığı fark, *tercüme everyederken Hdönüşür any. Yani * * * * *her dakika H * * * *anlamına gelir , saatte bir kez inşa etmek anlamına gelir , ancak tam dakikayı umursamıyorum (bir aralık tarafından tanımlanmadıysa 0-59 arasında herhangi bir yerde olabilir) ve H H * * *günde bir kez inşa etmek anlamına gelir, ancak ne zaman umurumda değil.
derHugo

-5

Sözdizimi:


MINUTE  Minutes within the hour (0-59)
HOUR    The hour of the day (0-23)
DOM     The day of the month (1-31)
MONTH   The month (1-12)
DOW     The day of the week (0-7) where 0 and 7 are Sunday.

Her 3 saatte bir zamanlamak istiyorsanız, sözdizimi aşağıdaki gibi görünmelidir:

* 3 * * * *

4
Bu her gün saat 3'te, her 3 saatte bir
planlanacak
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.