ฉันจะกำหนดเวลางานในเจนกินส์ได้อย่างไร


284

ฉันเพิ่มงานใหม่ในเจนกินส์ซึ่งฉันต้องการกำหนดตารางเวลาเป็นระยะ

จากการกำหนดค่างานฉันกำลังตรวจสอบช่องทำเครื่องหมาย "สร้างเป็นระยะ" และในฟิลด์ข้อความกำหนดการเพิ่มนิพจน์:

15 13 * * *

แต่มันไม่ทำงานในเวลาที่กำหนด

มันเป็นขั้นตอนที่ถูกต้องในการจัดตารางเวลางานหรือไม่?

ป้อนคำอธิบายภาพที่นี่

งานควรทำงานเวลา 4:20 น. แต่มันไม่ทำงาน


มันทำงานหรือไม่ทำงาน? cron ของคุณพูดว่า "ทุกวันเวลา 13:15 น." ถ้าฉันจำได้ถูกต้อง และใช่: ฉันคิดว่านี่เป็นวิธีที่ถูกต้องในการกำหนดตารางเวลาการสร้างเป็นระยะ
Fildor

1
บางทีนี่อาจช่วยคุณได้: en.wikipedia.org/wiki/Cron#CRON_expression - ฉันเห็น Cedric เชื่อมโยงแล้ว ... บางทีคุณควรบอกเราว่าช่วงเวลาที่ตั้งใจคืออะไร?
Fildor

1
สำหรับการอ้างอิงเครื่องหมายคำถามสีน้ำเงินบน RHS แสดงคำอธิบายที่ดีเกี่ยวกับค่าที่เป็นไปได้
devstopfix

นี่คือหน้าเว็บที่ดีในการสร้างอัตโนมัติ -> crontab-generator.org
Fabián Carrasco

คำตอบ:


506

ด้วยการกำหนดช่วงเวลาให้15 13 * * *คุณบอกเจนกินส์เพื่อกำหนดเวลาการสร้างทุกวันทุกเดือนของทุกปีในนาทีที่ 15 ของชั่วโมงที่ 13 ของวัน

เจนกินส์ใช้นิพจน์ cronและสาขาต่าง ๆ คือ:

  1. นาทีในหนึ่งชั่วโมง (0-59)
  2. ชั่วโมงในหนึ่งวัน (0-23)
  3. DAYMONTH วันในหนึ่งเดือน (1-31)
  4. เดือนในหนึ่งปี (1-12)
  5. DAYWEEK วันของสัปดาห์ (0-7) โดยที่ 0 และ 7 เป็นวันอาทิตย์

หากคุณต้องการกำหนดเวลาการสร้างของคุณทุก ๆ 5 นาทีสิ่งนี้จะทำงาน: */5 * * * *

หากคุณต้องการกำหนดเวลาการสร้างของคุณทุกวันเวลา 8h00 สิ่งนี้จะทำงาน: 0 8 * * *

สำหรับสองสามเวอร์ชั่นที่ผ่านมา (2014) เจนกินส์มีพารามิเตอร์ใหม่H(แยกจากเอกสารรหัสเจนกินส์ ):

เพื่อให้งานที่กำหนดเวลาไว้เป็นระยะสร้างภาระให้กับระบบได้ควรใช้สัญลักษณ์H(สำหรับ "แฮช") ทุกที่ที่ทำได้

ตัวอย่างเช่นการใช้0 0 * * *งานประจำวันโหลจะทำให้เกิดขัดขวางใหญ่ในเวลาเที่ยงคืน ในทางตรงกันข้ามการใช้H H * * *จะยังคงดำเนินการแต่ละงานวันละครั้ง แต่ไม่ทั้งหมดในเวลาเดียวกันดีกว่าการใช้ทรัพยากรที่ จำกัด

โปรดทราบว่า:

Hสัญลักษณ์อาจจะคิดว่าเป็นค่าสุ่มช่วง แต่จริง ๆ แล้วมันเป็นกัญชาชื่องานที่ไม่ได้เป็นฟังก์ชั่นแบบสุ่มเพื่อให้ค่ายังคงมีเสถียรภาพสำหรับโครงการใดก็ตาม

ตัวอย่างเพิ่มเติมของการใช้ 'H'


5
ดังนั้นวิธีการสร้างเป็นระยะหลังจากทุก 6 ชั่วโมง ไม่* */6 * * *จะทำงานอย่างไร
ѕтƒ

1
@ ѕтƒ: ใช่มันจะเปิดตัวสร้างทุก ๆ 6 ชั่วโมง
Cédric Julien

31
กระจายโหลดอย่างเท่าเทียมกันโดยใช้ 'H / 5 * * * *' มากกว่า '* / 5 * * * *'
Friederbluemle

1
หากคุณต้องการ จำกัด ช่วงของ H คุณสามารถใช้ H (1-3) เพื่อเลือกตัวเลขระหว่าง 1 และ 3 ตัวอย่างจะเป็น HH (1-3) * * * เพื่อให้ทำงานหนึ่งครั้งระหว่าง 01.00 น. ถึง 15.00 น.
AndyClaw

16
ดูเหมือนจะมีบางอย่างในสมองของฉันที่ไม่สามารถเข้าใจการแสดงออกเหล่านี้ได้โดยไม่ต้องอ้างถึงเอกสาร
ทักษะ M2

34

เจนกินส์ช่วยให้คุณตั้งค่าได้หลายครั้งโดยคั่นด้วยตัวแบ่งบรรทัด

หากคุณต้องการให้สร้างทุกวันเวลา 7:00 น. พร้อมกับทุกวันอาทิตย์เวลา 16.00 น. รายการด้านล่างใช้ได้ดี

H 7 * * *

H 16 * * 0

1
H (0-0) 6 * * 1 (สำหรับการวิ่งเวลา 6.00 น. ET ในวันจันทร์), H (0-0) 16 * * 0 (เวลา 16.00 น. ET ในวันอาทิตย์) ใช้งาน H 16 ธรรมดา (จะไม่ทำงานที่ 1600 / 4pm) คุณต้องใช้ H (0-0) 16 ....
AKS

2
@ArunSangal แทนที่จะH(0-0)ใช้0ประโยชน์จากการใช้งานHก็คือไม่ใช่ว่าทุกงานจะพยายามที่จะทำงานในเวลาเดียวกัน แต่พยายามที่จะได้รับ "เวลาสล็อตถัดไปที่มีให้"
derHugo


26

รูปแบบดังต่อไปนี้:

นาที (0-59), ชั่วโมง (0-23), วัน (1-31), เดือน (1-12), วันแห่งสัปดาห์ (0-6)

ตัวอักษร H ซึ่งหมายถึงคำว่าHashสามารถแทรกแทนค่าใดก็ได้ มันจะคำนวณพารามิเตอร์ตามรหัสแฮชของชื่อโครงการของคุณ

นี่คือถ้าคุณกำลังสร้างหลายโครงการบนเครื่องสร้างของคุณในเวลาเดียวกันสมมติว่าเที่ยงคืนทุกวันพวกเขาไม่เริ่มดำเนินการสร้างในเวลาเดียวกัน แต่ละโครงการจะเริ่มดำเนินการในนาทีที่แตกต่างกันขึ้นอยู่กับรหัสแฮช

คุณสามารถระบุค่าที่จะอยู่ระหว่างตัวเลขเช่น H (0,30) จะส่งคืนรหัสแฮชของโครงการที่แฮชที่เป็นไปได้คือ 0-30

ตัวอย่าง:

  1. เริ่มสร้างทุกวันเวลา 08:30 น. ในตอนเช้าวันจันทร์ - วันศุกร์: 30 08 * * 1-5

  2. วันทำงานทุกวันสร้างสองครั้งต่อวันเวลาอาหารเที่ยง 12:00 และเที่ยงคืน 00:00 วันอาทิตย์ถึงวันพฤหัสบดี: 00 0,12 * * 0-4

  3. เริ่มสร้างทุกวันในช่วงบ่ายระหว่าง 4:00 น. - 16.59 น. หรือ 16:00 น. -16: 59 น. ขึ้นอยู่กับโครงการแฮช: H 16 * * 1-5

  4. เริ่มสร้างตอนเที่ยงคืน: @ เที่ยงคืนหรือเริ่มสร้างตอนเที่ยงคืนทุกวันเสาร์: 59 23 * * 6

  5. ทุกวันแรกของทุกเดือนระหว่าง 2:00 น. - 02:30 น.: H (0,30) 02 01 * *


1
คำอธิบายที่ดี
vivek

10

ขั้นตอนสำหรับการจัดตารางเวลางานในเจนกินส์:

  1. คลิกที่"กำหนดค่า"ของความต้องการงาน
  2. เลื่อนลงไปที่ " Build Triggers " - คำบรรยาย
  3. คลิกที่ช่องทำเครื่องหมายของการสร้างเป็นระยะ
  4. เพิ่มตารางเวลาในฟิลด์กำหนดเวลาตัวอย่างเช่น @midnight

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ : ใต้ฟิลด์กำหนดเวลาสามารถดูการเรียกใช้ครั้งสุดท้ายและวันที่ถัดไป

เจนกินส์ยังสนับสนุนนามแฝงที่กำหนดไว้ล่วงหน้าเพื่อกำหนดเวลาสร้าง

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

@hourly -> สร้างทุก ๆ ชั่วโมงที่จุดเริ่มต้นของชั่วโมง -> 0 * * * *

@daily, @midnight -> สร้างทุกวันเวลาเที่ยงคืน -> 0 0 * * *

@weekly -> สร้างทุกสัปดาห์เวลาเที่ยงคืนของเช้าวันอาทิตย์ -> 0 0 * * 0

@monthly -> สร้างทุกเดือนในเวลาเที่ยงคืนของวันแรกของเดือน -> 0 0 1 * *


ตอนเที่ยงคืนค่อนข้างเจ๋ง :) เจนกินส์ดูเหมือนจะรับรู้ถึงค่าพิเศษบางอย่างที่เริ่มต้น @ รวมถึง @daily คุณสามารถโพสต์ลิงค์ไปยังรายการที่ชัดเจนได้หรือไม่?
chrisinmtown

@chrisinmtown เพิ่มรายการนามแฝงที่กำหนดไว้ล่วงหน้าหวังว่าจะเป็นประโยชน์สำหรับคุณ :)
Gavriel Cohen

7

ในการกำหนดเวลางาน cron ทุก 5 นาทีคุณจะต้องกำหนดการตั้งค่า cron ดังนี้:

*/5 * * * *

ฉันต้องการทำงานอย่างแน่นอน @ 8:00 น. EST ดังนั้นการแสดงออก cron ที่ฉันสร้างคือ - 00 08 * * * มันดีใช่ไหม
Sangram Anand

แต่น่าเสียดายที่มันไม่ได้ทำงานที่แนบมายิงหน้าจอของมันในการโพสต์ครับกำลังทดสอบกับเวลา EST ปัจจุบันคือ 04:20 บางสิ่งบางอย่าง ..
Sangram อานันท์

เวลา EST ที่เป็นเขตเวลาเดียวกันในการสร้างเซิร์ฟเวอร์หรือไม่
fduff

ใช่เวลาเหมือนกัน btw the * / 5 * * * * (ทุก 5mts) ทำงานได้ดี
Sangram Anand

ในการทำงานให้ตรงเวลา 8.00 น. EST คุณต้องทำเช่นนี้: H (0-0) 8 * * *
AKS


2

Jenkins ใช้รูปแบบ Cron ในการจัดตารางเวลา คุณสามารถดูลิงค์นี้สำหรับ detailhttps เพิ่มเติมได้ที่: //en.wikipedia.org/wiki/Cron อีกอย่างเจนกินส์ให้ตัวอย่างที่มีประโยชน์มากกับเรา โปรดดูภาพหน้าจอ ป้อนคำอธิบายรูปภาพที่นี่

ฉันหวังว่าความช่วยเหลือนี้ ขอบคุณ


วิธีใช้การเปลี่ยนแปลงเหล่านี้
Balaji Boggaram Ramanarayan


-1

สำหรับทุกคนที่ไม่ต้องการรอเต็มชั่วโมงเพื่อดูว่ามีการสร้างเฉพาะหรือไม่:

เพื่อให้ได้รับกัญชาคุณสามารถดาวน์โหลด Hasher ที่นี่ ใช้ชื่อโปรเจ็กต์แบบเต็มตามที่พิมพ์ลงในหน้าสาขาและพิมพ์ดังนี้:

System.out.println(Hash.from("sub/microservices/master"));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.