วิธีการเริ่มต้นใหม่อย่างปลอดภัยเจนกินส์?


19

ฉันจำเป็นต้องทำการเปลี่ยนแปลงการกำหนดค่าบางอย่างในอินสแตนซ์ของเจนกินส์ของเราซึ่งจะเกี่ยวข้องกับการรีสตาร์ทเจนกินส์สองสามครั้ง อย่างไรก็ตามนักพัฒนาของเรายอมรับบ่อยพอที่ฉันไม่ได้เห็นเจนกินส์ที่ไม่มีงานทำในสามวัน

มีวิธีดั้งเดิม (ผ่าน GUI หรือผ่านบรรทัดคำสั่ง) เพื่อเริ่มต้นใหม่อย่างปลอดภัย Jenkins หรือไม่ IE: รอให้งานปัจจุบันเสร็จก่อนที่จะลงและติดตามงานที่อยู่ในคิวเพื่อเริ่มต้นเมื่อ Jenkins กลับมาทำงานอีกครั้ง

ฉันรู้ว่ามีปลั๊กอินแต่เพื่อที่จะติดตั้งฉันต้องรีสตาร์ทเจนกินส์ ...


คาดเดาจากส่วนบนของหัวของฉัน แต่ไม่ได้ปิดการใช้งานตัวเลือกทาส? (เท่าที่ผมจำได้ว่ามันไม่ได้หยุดงานอย่างต่อเนื่อง แต่ป้องกันไม่ให้งานเพิ่มเติมในคิวที่จะเปิดตัว)
Tensibai

ในทางทฤษฎีด้วยอินสแตนซ์ของเจนกินส์ที่ถูกกำหนดค่าอย่างเหมาะสมในการรันงานไปป์ไลน์คุณสามารถรีสตาร์ทโหนดต้นแบบหรือโหนดทาสได้ทุกเมื่อที่คุณต้องการ อย่างไรก็ตามประสบการณ์ของฉันพูดเป็นอย่างอื่น
jayhendren

คำตอบ:


14

หากคุณนำทาง$YOUR_JENKINS_URL/updateCenter/คุณควรเห็นหน้าต่อไปนี้:

ที่นี่คุณสามารถตรวจสอบRestart Jenkins when installation is complete and no jobs are runningซึ่งควรจะค่อนข้างปลอดภัย


ฉันเข้าใจว่าการรีสตาร์ทจะเกิดขึ้นหากปลั๊กอินอยู่ในขั้นตอนการติดตั้ง ... ไม่มีวิธีใดที่จะบังคับให้รีสตาร์ทเกิดขึ้นโดยไม่ต้องติดตั้งปลั๊กอินใช่หรือไม่
อเล็กซ์

1
@Alex ฉันเพิ่งทดสอบในอินสแตนซ์ของฉันและสำหรับฉันมันดูเหมือนว่าจะทำงานได้เสมอโดยไม่คำนึงถึงการติดตั้งปลั๊กอิน ตามstackoverflow.com/a/8077830ก็ควรจะมี/safeRestartและ/restartจุดสิ้นสุด
eyalzek

1
แต่คำถามเกี่ยวกับการเริ่มต้นใหม่ในขณะที่งานกำลังทำงานอยู่หรือไม่
Dan Cornilescu

@DanCornilescu คำถามระบุ: IE: wait for current jobs to finish before going down, and keep track of queued jobs to start once Jenkins comes back up.นี่คือสิ่งที่เกิดขึ้นเมื่อคุณทำเครื่องหมายที่กล่อง
eyalzek

ฉันถูกถามเนื่องจากคำถามยังระบุด้วยJenkins without jobs running in three days- ซึ่งหมายความว่าจะมีผลกระทบเนื่องจากงานบางอย่างจะล่าช้า แต่ก็ยังดีกว่าการสูญเสียงาน
Dan Cornilescu

15

การเยี่ยมชมhttps: // youjenkinsdomain / safeRestartจะตั้งค่าในโหมดเมื่อรอให้งานหยุดแล้วเริ่มใหม่


2
ฉันต้องการใช้คำตอบเฉพาะนี้เมื่อเซิร์ฟเวอร์ Jenkins ของเราเริ่มต้นและไม่สามารถรีสตาร์ทเมื่อจำเป็นต้องใช้ปลั๊กอิน
kayleeFrye_onDeck

8

คุณสามารถรันคำสั่ง safeRestart โดยใช้ส่วนที่เหลือเจนกินส์ API ( [jenkins_url] / safeRestart ) หรือคุณสามารถรันคำสั่งผ่านทางเจนกินส์ CLI

sudo /etc/init.d/jenkins safeRestart

กำลังรันคำสั่ง CLI

ไวยากรณ์ทั่วไปมีดังนี้ (การออกแบบคล้ายกับเครื่องมือเช่น svn / git):

java -jar jenkins-cli.jar [-s JENKINS_URL] คำสั่ง [ตัวเลือก ... ] [อาร์กิวเมนต์ ... ]

JENKINS_URL สามารถระบุได้ผ่านตัวแปรสภาพแวดล้อม $ JENKINS_URL ตัวแปรสภาพแวดล้อมนี้ถูกตั้งค่าโดยอัตโนมัติเมื่อ Jenkins แยกกระบวนการระหว่างการสร้างซึ่งอนุญาตให้คุณใช้ Jenkins CLI จากภายในบิลด์โดยไม่ต้องกำหนดค่า URL อย่างชัดเจน

หมายเหตุ: เมื่อรันคำสั่ง safeRestart งานใด ๆ ที่ตั้งค่าให้ดำเนินการในระหว่างการรีสตาร์ทจะถูกจัดคิวและดำเนินการเมื่อเซิร์ฟเวอร์กลับสู่สถานะออนไลน์ ตรวจสอบให้แน่ใจว่าสิ่งนี้ไม่ทำให้เกิดข้อขัดแย้งใด ๆ เมื่อรีบูต!


1

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

  • จำกัด การเข้าถึงโมดูลผู้ดูแลระบบเพื่อไม่ให้นักพัฒนาซอฟต์แวร์ทุกคนสามารถติดตั้งปลั๊กอินได้
  • แนะนำผู้พัฒนาเกี่ยวกับการหยุดทำงานและแจ้งให้ทราบล่วงหน้า
  • ติดตั้งปลั๊กอินที่จำเป็นทั้งหมดเป็นกลุ่มและเริ่ม Jenkins ใหม่
  • แจ้งผู้พัฒนาว่าเจนกินส์พร้อมสำหรับการใช้งานแล้ว

ฉันเข้าใจว่าต้องใช้ความพยายามและการประสานงานด้วยตนเอง แต่สิ่งนี้ได้ผลดีในโครงการของเรา


1

ในการรีสตาร์ท Jenkins ด้วยตนเองคุณสามารถใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้ (โดยป้อน URL ในเบราว์เซอร์):

(jenkins_url)/safeRestart- ช่วยให้งานที่กำลังดำเนินการทั้งหมดเสร็จสมบูรณ์ งานใหม่จะยังคงอยู่ในคิวเพื่อเรียกใช้หลังจากการรีสตาร์ทเสร็จสมบูรณ์

(jenkins_url)/restart - บังคับให้รีสตาร์ทโดยไม่ต้องรอให้การสร้างเสร็จสมบูรณ์


0

การเยี่ยมชม " https: // jenkins / safeRestart " ไม่รอให้ "jobs / builds" เสร็จสิ้นอย่างสมบูรณ์ในกรณีที่ไปป์ไลน์

ดูเหมือนว่าจะรอขั้นตอนเพื่อให้เสร็จสิ้นและเริ่มการทำงานของเจนกินส์ให้รีสตาร์ทและดำเนินการต่อหลังจากที่เจนกิ้นส์ขึ้นมาอีกครั้ง


1
ฉันเดาว่านี่เป็นความคิดเห็นต่อคำตอบของ @Nakilon หรือไม่?
hagello

0

เจนกินส์ถูกออกแบบมาเพื่อไม่ได้รับผลกระทบจากการรีสตาร์ท จากประสบการณ์ของฉันเป็นไปได้ว่าบิลด์อาจล้มเหลวเนื่องจากการรีสตาร์ท แต่มันก็หายาก

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

หลังจากนั้นเราจะทำการรีสตาร์ทที่ปลอดภัยเสมอในตอนนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.