Jenkins işlerini ve ana yapılandırmalarını nasıl yedeklersiniz?


56

Tüm Jenkins işlerini yedeklemek ve dosyalarınızı yapılandırmak istiyorum. Bunu yapmanın en kolay yolu nedir?


Ne denedin
030

1
Denedim bu .
kenorb

Yanıtlar:


33

Bunu yapmanın pek çok yolu var, ancak sanırım en kolay yolu Jenkins Home klasörünün yedeğini almak.

Jenkins'inin evde nerede olduğunu görebilirsin:

echo $JENKINS_HOME

Ve örneğin, yalnızca işleri yedeklemek istiyorsanız, şuraya gidebilirsiniz:

cd $JENKINS_HOME/jobs

Ve bu klasör için bir yedekleme yapın.

Bütün bu yapılandırma bir sürü XML dosyası olacak.

Eğer kullanıyorsanız resmi Jenkins liman işçisi görüntü , ev olacak:

/var/jenkins_home

2
Ben erişmesini Jenkins kullanıcıya geçiş için gerekli $JENKINS_HOME: ortam değişkeninin sudo su -s /bin/bash jenkinssonra ve echo $JENKINS_HOMEbenim için hangi/var/lib/jenkins
Bryce Guinta

2
'İşler' klasörünün tamamını yedeklemedeki sorun, iş yürütmelerinin de kopyalanmasıdır - bu birçok GB anlamına gelebilir.
Mike Argyriou

Jenkins'in hizmeti yeniden başlatılmalı mı?
Xin Meng,

MacOS'taki Jenkins home (Homebrew varsayılan kurulum): ~ / .jenkins
chuckSaldana

30

Tüm işler ( jobs/) ve ana yapılandırma dosyaları ( config.xml) , aşağıdaki yapıdaki Jenkins home klasöründe ( JENKINS_HOME) bulunabilir:

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

Config .xmldosyasının çoğu XML biçimindedir, bu nedenle tüm dosyaların desteklenmesi yeterlidir.

Tüm ayarlar, kayıt günlükleri, yapay arşivler JENKINS_HOME dizini altında saklanır. Yedekleme yapmak için bu dizini arşivlemeniz yeterlidir. Benzer şekilde, verileri geri yüklemek sadece JENKINS_HOME dizininin içeriğini yedeklemekten değiştirmektir.

Sunucu durdurulmadan yedek alınabilir, ancak geri yüklediğinizde, lütfen sunucuyu durdurun.


Tutarlı yedeklemeler için, JENKINS_HOMEdizini Git deposunda tutmak iyi bir uygulamadır .

Örneğin:

cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

ve dosyaları harici depoya iterek. Bazı dosyaları yoksaymak için aşağıdaki .gitignoredosyayı da ekleyebilirsiniz .

İlgili: Hudson / Jenkins yapılandırma dosyalarını kaynak kontrolünde tutmanın bir yolu var mı?


Ne sıklıkla yedekleme yapıyorsunuz? Kodu otomatik olarak git deposuna mı zorluyorsunuz? Doğruysa, bazı yedekleme bütünlüğü kontrolü yapmak için manuel olarak birleştirilmesi gereken bir Çekme İsteği oluşturuyor musunuz (manuel müdahale)?
030

2
@ 030 Genelde bazı önemli değişikliklerden sonra, konfigürasyonun kararlı olduğunu bildiğimde ve onu yedeklemem gerektiğinden, Jenkins genellikle köleleri unix'ten pencerelerden pencerelere değiştirmek, şifreleri formlardan kaldırmak gibi şeyleri bozmayı sever. Onları git / GitHub'a ekleyerek, eksik verileri kolayca karşılaştırabilir ve bulabilir ve geri ekleyebilir ya da belirli bir dosyayı geri alabilirim. Tarih değişikliklerini devam ettirecek bazı eklentiler var, ancak yararlı bulmadım.
kenorb

Şifreleri git içinde sakladın mı? Onları şifreliyor musun? Pipeline (aka Pipeline) kodunu kullanıyor musunuz?
030

3
@ 030 Jenkins varsayılan olarak şifreleri / kimlik bilgilerini şifreler, ancak şifreleri kolayca çözebilirsiniz . Ancak, ana anahtar (yedeklemenin bir parçası olmamalıdır) veya Jenkins'e erişim olmadan başka kimse yapamaz. Pipeline'ı Kod olarak kullanmıyorum.
kenorb

Git'teki bu yedeklemenin bütünlüğünü nasıl test edersiniz? Örneğin, sanal bir makine mi yoksa liman işçisi mi çalışıyorsunuz, git repo'yu monte ediyor musunuz ve her şeyin hala çalışıp çalışmadığını kontrol ediyor musunuz?
030

11

Jenkins işleriniz bir Jenkinsfile dosyasında tanımlanmışsa, bir git deposunda saklayabilir ve Pipeline kullanarak yüklenmesini sağlayabilirsiniz .

Ne yazık ki, tüm Jenkins eklentileri Jenkinsfile ve Pipeline'ı desteklemediğinden, mevcut işleri bu formata taşımak istiyorsanız manuel olarak yeni Jenkinsfiles oluşturmanız gerekir.


9

SCM Sync Yapılandırma Eklentisi istediğiniz tam olarak ne yapar. Jenkins çekirdeğinizi ve iş yapılandırmanızı yedeklemek için svn veya git ile çalışır, böylece yedeklemenin yanı sıra değişiklik yapanlar için de kolay izleme yapabilirsiniz.


1
Kelimenin tam anlamıyla $ JENKINS_HOME klasörünü tar, ancak bu soooo çok daha iyi görünüyor.
MrMesees

2
Eklentiler oldukça etkin / ölü görünüyor - 2017 itibariyle gerçekten işlevsel ve eşit mi?
Tuukka Mustonen

5

Jenkins verilerini ve ana yapılandırmaları yedeklemenin birkaç yolu vardır. Yedeklemenin en iyi yolu, Thinbackup eklentisini kullanmaktır. Cron ifadelerini kullanarak zamanında yedeklemeler zamanlayabilirsiniz. Tam yedeklemeyi ve artımlı yedeklemeyi de yapılandırabilirsiniz.

Veri ve yapılandırma yedeklemenin bir başka yolu da, jenkins ana sunucunuzun disk görüntüsünü almaktır. Bunu bir diski monte ederek ve jenkins config dizinini disk montaj noktasına bağlayarak yapmanın ideal yolu

Her iki senaryo da bu blog gönderisinde iyi açıklanmıştır . Konfigürasyonlar için daha iyi bir fikir ve adımlar elde edersiniz.


3

Ben komut dosyalarını kullanıyorum sue445/jenkins-backup-script.

Jenkins ayarlarını ve eklentilerini aşağıdaki gibi arşivler:

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

kullanım

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz

2

ThinBackup eklentisini deneyebilirsiniz (aktif olarak korunmasa bile) [ mantıksal bir yedekleme almak istediğiniz her şeyse ] (yani config xml dosyalarının, işlerin, düğümlerin çoğu gibi). Yedekleme boyutu çok büyük olmayacak.


1

Jenkins'i bir Windows Server örneğinden diğerine geçirmem gerekiyordu. Sonunda böyle yapmayı başardım:

  • Jenkins hizmetini durdur (eğer karşılayabilirsen)
  • Jenkins klasörünün tamamını kopyala (varsayılan olarak C:\Program Files x86\Jenkins)
  • Yeni örneğe yapıştır
  • Dizine gir ve koş jenkins.exe install

Bu, yeni yapıştırılan Jenkins'i yeni makineye bir servis olarak kaydeder ve% 100 aynı şekilde çalışır.

Bu işe yararsa, gelecekteki güvenlik için bir yedeğe ihtiyacınız varsa, Jenkins klasörünü bir yere kopyalayın. Anlık görüntü gibi çalışacaktır.

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.