Jenkins bir PC'den diğerine nasıl taşınır


154

Şu anda geliştirme bilgisayarımda Jenkins kullanıyorum. Geliştirme bilgisayarıma kurdum, çünkü bu araç hakkında sınırlı bilgiye sahibim; bu yüzden geliştirme bilgisayarımda test ettim. Şimdi, yapım sürecinde uzun vadeli "ortağım" olarak Jenkins ile rahatım ve bu Jenkins'i özel bir sunucuya "taşımak" istiyorum.

Bundan önce birkaç yapı yaptım ve her yapıdan eserler arşivledim. Özellikle sürüm numarası için yapı numarası benim için çok önemlidir.

Mevcut bilgisayarımdaki tüm Jenkins bilgilerini yeni sunucuma nasıl aktarabilirim?


6
Sadece yaptım. Cédric Julien'in cevabındaki adımları izledim, ancak Windows'ta Jenkins hareketten sonra başarılı bir şekilde başlatılabilmesi için bir Onarım yüklemesi çalıştırmak zorunda olduğumu buldum. Onarımdan sonra her şey yolunda.
Şirin269

Yanıtlar:


175

Jenkins wiki'sini takiben şunları yapmanız gerekir:

  • Yeni sunucuya yeni bir Jenkins örneği yükleyin
  • Eski ve yeni Jenkins örneklerinin durdurulduğundan emin olun
  • Eski Jenkins örneğinin JENKINS_HOME içeriğinin tümünü arşivleyin
  • Arşivi yeni JENKINS_HOME dizinine çıkarın
  • Yeni Jenkins örneğini başlatın
  • Yeni Jenkins örneğinizin belgelerini / bağlantılarını değiştirmeyi unutmayın :)
  • Yeni Jenkins dosyalarının sahibini değiştirmeyi unutmayın: chown -R jenkins:jenkins $JENKINS_HOME

JENKINS_HOME varsayılan ~/.jenkinsolarak bir Linux kurulumunda bulunur, ancak tam olarak nerede olduğunu bulmak için http: // your_jenkins_url / configure sayfasına gidin ve ilk parametrenin değerini kontrol edin Home directory:; bu JENKINS_HOME.


1
Yeni cenkinlerimi fırlattığımda, düğümlerim aşağı doğru, doğru. Ancak bazı düğümlere tıkladığımda URL'ler eski jenkinlere aşağıdaki gibi işaret ediyor: Köle komut satırından çalıştır: javaws old-jenkins-server: 8080 / computer / slaveMachine1 / slave-agent.jnlp Veya köle başsızsa : java -jar slave.jar -jnlpUrl old-jenkins-server: 8080 / computer / slaveMachine1 / slave-agent.jnlp Şimdi Her düğüm için bu URL'leri new-jenkins-server'ı gösterecek şekilde nasıl yapmalıyım?
merlachandra

13
Önceki yorumumda bahsedilen sorunuma çözüm buldum: Jenkins'i Yönet> sistemi yapılandır. Burada 'Jenkins Konumu' bölümünde, 'Jenkins URL' alanı altında, URL'yi yeni jenkins sunucusuna yönlendirecek şekilde değiştirin.
merlachandra

3
gizli klasörleri de kopyaladığınızdan emin olun!
mohi

7
"Jenkins'in yeni örneğine ilişkin belgeleri / bağlantıları değiştirmeyi unutmayın" için haha ​​+1
Iain Smith

2
Doğru dosya izinleri ve sahiplik ile ilgili sorunlar yaşadım, düzeltmek için bu docker betiğini (sahiplik / izinleri ayarlayan bölüm) kullandım: hub.docker.com/r/appcontainers/jenkins/~/dockerfile
marcinj

53

Durumda sizin JENKINS_HOME dizini kopyalamak kadar büyük ve tek ihtiyacınız aynı İşler Jenkins Eklentiler ve Jenkins yapılandırmaları kurulum için (ve eski İş eserler ve raporları gerekmez), o zaman kullanabilirsiniz ThinBackup Plugin :

  1. ThinBackup'ı hem kaynak hem de hedef Jenkins sunucularına yükleyin
  2. Her ikisinde de Yedekleme Dizini'ni yapılandırın (Jenkins'i Yönet -> ThinBackup -> Ayarlar'da)

  3. Sourse Jenkins üzerinde ThinBackup gidin -> Şimdi Yedekle

  4. Jenkins Kaynak Yedekleme dizininden Jenkins Hedef Yedekleme Dizini'ne kopyalayın
  5. Hedef Jenkins'te ThinBackup -> Geri Yükle'ye gidin ve Jenkins hizmetini yeniden başlatın.
  6. Bazı Eklentiler veya İşler eksikse, yedek içeriği doğrudan hedef JENKINS_HOME'a kopyalayın.

  7. Kaynak Jenkins üzerinde kullanıcı kimlik doğrulaması yaptıysanız ve şimdi hedef Jenkins'e kilitlendiyseniz, Jenkins config.xml dosyasını düzenleyin, <useSecurity>false olarak ayarlayın ve Jenkins'i yeniden başlatın.


2
JENKINS_HOME dizini neden kopyalanamayacak kadar büyük? Ne tür boyutlardan bahsediyoruz?
wotanii

9
benim jenkins_home 100Gb ya da öylesine, çoğunlukla atmak şeyler olarak bunu yeni sunucuya kopyalamak istemiyorum
user230910

3
Jenkins_home'ım ~ 4TB, bu nedenle yalnızca yapılandırmayı taşıyan ve derleme geçmişlerinin veya / kullanıcı içeriğinin hiçbirinin kullanılmadığı ince bir kopya yararlıdır.
VolleyJosh

Harika, Eklentiler ... Gerçekten çok zaman
kazandım

11

Bu benim için Ubuntu 12.04'ten (Jenkins sürüm 1.628) Ubuntu 16.04'e (Jenkins sürüm 1.651.2) geçmemde işe yaradı. Jenkins'i ilk önce depolardan kurdum .

  1. Jenkins sunucularının ikisini de durdurun
  2. JENKINS_HOMEEski sunucudan yenisine kopyalayın (örn. / Var / lib / jenkins). Yeni sunucudaki bir konsoldan:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. Yeni Jenkins sunucunuzu başlatın

Buna ihtiyacınız olmayabilir, ama ihtiyacım vardı

  • Manage Jenkinsve Reload Configuration from Disk.
  • Tüm slave'lerin bağlantısını kesin ve tekrar bağlayın.
  • İçinde olduğunu kontrol edin Configure System > Jenkins Location, Jenkins URLdoğru yeni Jenkins sunucuya atanır.

Yeni Jenkins eskisiyle aynı versiyona sahip miydi?
Jakub Czaplicki

@JakubCzaplicki - Her iki Jenkins de 1.6 idi, ancak tam olarak aynı sürümde değildi. Yanıt güncellendi. Daha sonra Ubuntu 16.04 jenkins.war dosyasını değiştirerek Jenkins 2.6'ya güncelledim ve iyi çalıştı. stackoverflow.com/questions/11062335/…
Katu

Yukarıdaki ve ziyaret ettikten sonra /configureSecurityben olsunjava.lang.AssertionError: InstanceIdentity is missing its singleton
maxisme

@maxisme, late, ancak bu konu bahsettiğiniz sorunun java versiyonu ile ilgili olduğunu gösteriyor. issues.jenkins-ci.org/browse/JENKINS-46182
Katu

1

Jenkins Sunucu Otomasyonu:

Aşama 1:

Jenkins evini (işler, yapılandırmalar, eklentiler, vb.) Bir GitLab yerelinde veya GitHub özel havuzunda saklamak için bir depo oluşturun ve Jenkins işlerinde, eklentilerinde vb. Yeni değişiklikleri iterek düzenli olarak güncellenmesini sağlayın.

Adım 2:

Jenkins için yeni Jenkins sunucularını döndürmek için kullanılabilecek bir Kukla ana bilgisayar grubu / rolü yapılandırın . Tüm temel yapılandırmayı bir Kukla tarifinde yapın ve Jenkins'in en son sürümünü yüklediğinden ve için ayrı bir dizin / montaj kurduğundan emin olun JENKINS_HOME.

Aşama 3:

Yukarıdaki Jenkins-kukla yapılandırmasını kullanarak yeni bir makine döndürün. Her şey kurulduğunda, Git deposundan Jenkins home direcotry'ye Jenkins yapılandırmasını alın / klonlayın ve Jenkins'i yeniden başlatın.

4. Adım:

Jenkins URL'sine gidin, Jenkins'i YönetinEklentileri Yönetin ve güncelleme gerektiren tüm eklentileri güncelleyin.

Bitti

Sen kullanabilirsiniz Docker Swarm veya Kubernetes otomatik ölçeğine yardımcı devreler.


1

Bazen bir klasörü doğrudan başka bir Jenkins örneğine kopyalamak için Jenkins makinesine erişemeyebiliriz. Bu yüzden bir Jenkins örneğinden diğerine eklentileri ve işleri yüklemek için Jenkins REST API çağrılarını kullanan bir menü odaklı yardımcı program yazdım.

Eklenti taşıma için:

  1. İstek ALIN: {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1sürümleriyle birlikte yüklenen eklentilerin listesini alırsınız.
  2. Bu eklentileri yüklemek için aşağıdaki parametrelerle bir POST isteği gönderebilirsiniz.

    final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins`
    
    data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name)
    
    auth=`(destination_jenkins_username, destination_jenkins_password)`
    
    header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json
    

İş göçü için:

  1. Bir REST çağrısı kullanarak {SOURCE_JENKINS_URL} ürününde kurulu işlerin listesini alabilirsiniz, {SOURCE_JENKINS_URL}/view/All/api/json
  2. Daha sonra her iş config.xml dosyasını, iş URL'sini kullanarak {SOURCE_JENKINS_URL} üzerindeki işlerden alabilirsiniz {SOURCE_JENKINS_URL}/job/{JOB_NAME}.
  3. {DESTINATION_JENKINS_URL} üzerinde XML dosyasının içeriğini POST yapmak için bu config.xml dosyasını kullanın ve bu, {DESTINATION_JENKINS_URL} üzerinde bir iş oluşturur.

Kullanıcıdan eklenti veya Jenkins geçişini başlatmasını isteyen ve bunu yapmak için Jenkins REST API çağrılarını kullanan Python'da menü odaklı bir yardımcı program oluşturdum.

Bu URL'den JenkinsMigration.docx dosyasına başvurabilirsiniz


Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
vich
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.