Jenkins nasıl güvenli bir şekilde yeniden başlatılır?


19

Jenkins örneğimizde Jenkins'i birkaç kez yeniden başlatmayı içeren bazı yapılandırma değişiklikleri yapmam gerekiyor. Bununla birlikte, geliştiricilerimiz Jenkins'i üç gün içinde iş görmeden görmediğim kadar sık ​​taahhüt ediyorlar.

Jenkins'i güvenli bir şekilde yeniden başlatmanın yerel bir yolu var mı (GUI veya komut satırı üzerinden)? IE: aşağı inmeden önce mevcut işlerin bitmesini bekleyin ve Jenkins geri döndüğünde sıraya alınan işleri takip edin.

Bir eklenti olduğunu biliyorum ama yüklemek için Jenkins'i yeniden başlatmam gerekiyor ...


Kafamın üstünden tahmin et, ancak köleleri devre dışı bırakmak bir seçenek değil mi? (hatırladığım kadarıyla devam eden işleri durdurmaz ancak sıradaki ek işlerin başlatılmasını
önler

Teorik olarak, Boru Hattı işlerini çalıştıran düzgün yapılandırılmış Jenkins örneğiyle, istediğiniz zaman ana veya bağımlı düğümleri yeniden başlatabilirsiniz. Ancak tecrübelerim aksini söylüyor.
jayhendren

Yanıtlar:


14

Eğer giderseniz $YOUR_JENKINS_URL/updateCenter/aşağıdaki sayfayı görmelisiniz:

Burada Restart Jenkins when installation is complete and no jobs are runninghangisinin oldukça güvenli olduğunu kontrol edebilirsiniz .


Yeniden başlatmanın yalnızca eklentiler yükleme aşamasındaysa gerçekleştiğini anlıyorum ... eklentileri yüklemeden bu yeniden başlatmayı zorlamanın bir yolu yok, değil mi?
Alex

1
@Alex örneğimde test ettim ve benim için eklenti kurulumundan bağımsız olarak her zaman işe yarıyor gibi görünüyor. Stackoverflow.com/a/8077830 'a göre bir /safeRestartve /restartuç noktaları da olmalıdır .
eyalzek

1
Ancak işler devam ederken yeniden başlatma sorusu değil mi?
Dan Cornilescu

@DanCornilescu şu soruyu ifade eder: IE: wait for current jobs to finish before going down, and keep track of queued jobs to start once Jenkins comes back up.Bu kutuyu işaretlediğinizde tam olarak ne olur.
eyalzek

Sorunun da belirttiği gibi soruyordum Jenkins without jobs running in three days- bu, bazı işlerin gecikeceği için bir etki olacağı anlamına geliyor. Ama yine de, iş kaybetmekten daha iyi.
Dan Cornilescu


8

SafeRestart komutunu Jenkins Rest API'sını ( [jenkins_url] / safeRestart ) kullanarak ya da Jenkins CLI aracılığıyla komutu yürütebilirsiniz .

sudo /etc/init.d/jenkins safeRestart

CLI komutu çalıştırma

Genel sözdizimi aşağıdaki gibidir (tasarım svn / git gibi araçlara benzer):

java -jar jenkins-cli.jar [-s JENKINS_URL] komut [seçenekler ...] [argümanlar ...]

JENKINS_URL, $ JENKINS_URL ortam değişkeni ile belirtilebilir. Bu ortam değişkeni, Jenkins derlemeler sırasında bir işlemi çatalladığında, URL'yi açıkça yapılandırmadan yapının içinden Jenkins CLI kullanmanızı sağlar.

NOT: safeRestart komutunu çalıştırırken, yeniden başlatma sırasında yürütülecek tüm işler sıraya alınır ve sunucu tekrar çevrimiçi olduğunda yürütülür. Bunun yeniden başlatma sırasında herhangi bir çatışmaya neden olmadığından emin olun!


1

Bence bu birçok kişinin çözmeye çalıştığı gerçek bir problem. Eklenti yüklemesi üzerine Jenkins'i yeniden başlatmanın tercih edildiği zamanlar vardır. Deneyimlerime dayanarak verebileceğim önerilerden biri:

  • Her bir geliştiricinin eklenti yükleyememesi için yönetici modülüne erişimi kısıtlayın
  • Geliştiricilere kesinti süresi hakkında bilgi verin ve onları önceden bilgilendirin
  • Gerekli tüm eklentileri toplu olarak yükleyin ve Jenkins'i yeniden başlatın.
  • Geliştiricilere Jenkins'in kullanıma hazır olduğunu bildirin

Bunun manuel bir çaba ve koordinasyon gerektirdiğini anlıyorum. Ancak bu, projemizde şimdiye kadar çok iyi çalıştı, bahsetmekten zarar görmedi.


1

Jenkins'i manuel olarak yeniden başlatmak için aşağıdaki komutlardan birini kullanabilirsiniz (URL'lerini bir tarayıcıya girerek):

(jenkins_url)/safeRestart- Çalışan tüm işlerin tamamlanmasını sağlar. Yeni işler, yeniden başlatma tamamlandıktan sonra çalıştırılacak kuyrukta kalacaktır.

(jenkins_url)/restart - Yapıların tamamlanmasını beklemeden yeniden başlatmaya zorlar.



0

Jenkins yeniden başlatmalardan etkilenmeyecek şekilde tasarlanmıştır. Deneyimlerime göre, bir yeniden başlatma nedeniyle bir yapı başarısız olabilir, ancak nadirdir.

Çalıştığım yerde Jenkins'i düzenli olarak yeniden başlatmak zorunda kalıyorduk. Hayal edebileceğiniz her tür işimiz var, bazıları küçük, bazıları büyük. Bir turşunun rehidre edilmediği bir yapıda sadece bir kez başarısız olduk.

Bundan sonra, şimdi her zaman güvenli yeniden başlatmalar yapıyoruz.

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.