Wie sichern Sie Jenkins Jobs & Master-Konfigurationen?


56

Ich möchte alle Jenkins-Jobs und Konfigurationsdateien sichern. Wie geht das am einfachsten?


Was hast du versucht?
030

1
Ich habe versucht , dies .
Kenorb

Antworten:


33

Es gibt viele Möglichkeiten, dies zu tun, aber die einfachste, die ich mir vorstellen kann, ist das Sichern des Ordners Jenkins Home.

Sie können sehen, wo Ihre Jenkins zu Hause sind:

echo $JENKINS_HOME

Wenn Sie zum Beispiel nur die Jobs sichern möchten, können Sie zu Folgendem wechseln:

cd $JENKINS_HOME/jobs

Und machen Sie ein Backup für diesen Ordner.

Die gesamte Konfiguration besteht aus einer Reihe von XML- Dateien.

Wenn Sie das offizielle Jenkins-Docker-Image verwenden , ist die Startseite aktiviert :

/var/jenkins_home

2
Ich musste zum Benutzer jenkins wechseln, um auf die $JENKINS_HOMEUmgebungsvariable zugreifen zu können: sudo su -s /bin/bash jenkinsund dann echo $JENKINS_HOME, was für mich war/var/lib/jenkins
Bryce Guinta

2
Das Problem beim Sichern des gesamten Ordners 'jobs' ist, dass auch die Jobausführungen kopiert werden - dies kann viele GB bedeuten.
Mike Argyriou

Ob der Dienst von Jenkins neu starten soll?
Xin Meng

Jenkins zu Hause in MacOS (Homebrew-Standardinstallation): ~ / .jenkins
chuckSaldana

30

Alle Jobs ( jobs/) und Master-Konfigurationsdateien ( config.xml) befinden sich im Jenkins-Ausgangsordner ( JENKINS_HOME) in der folgenden Struktur:

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)

Die meisten Konfigurationsdateien liegen im XML-Format vor, sodass das Sichern aller .xmlDateien ausreichen sollte.

Alle Einstellungen, Erstellungsprotokolle und Artefaktarchive werden im Verzeichnis JENKINS_HOME gespeichert. Archivieren Sie einfach dieses Verzeichnis, um ein Backup zu erstellen. In ähnlicher Weise ersetzt das Wiederherstellen der Daten lediglich den Inhalt des Verzeichnisses JENKINS_HOME aus einer Sicherungskopie.

Sicherungskopien können erstellt werden, ohne den Server anzuhalten. Halten Sie den Server jedoch bei der Wiederherstellung an.


Für konsistente Backups empfiehlt es sich, das JENKINS_HOMEVerzeichnis im Git-Repository zu behalten .

Zum Beispiel:

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

und Übertragen der Dateien in das externe Repository. Sie können auch die folgende .gitignoreDatei hinzufügen , um einige Dateien zu ignorieren.

Verwandte Themen: Gibt es eine Möglichkeit, Hudson / Jenkins-Konfigurationsdateien in der Quellcodeverwaltung zu behalten?


Wie oft erstellen Sie ein Backup? Übertragen Sie den Code automatisch in ein Git-Repository? Wenn dies zutrifft, erstellen Sie eine Pull-Anforderung, die manuell zusammengeführt werden muss (manueller Eingriff), um eine Überprüfung der Sicherungsintegrität durchzuführen?
030

2
@ 030 Normalerweise manuell nach einigen größeren Änderungen, wenn ich weiß, dass die Konfiguration stabil ist und ich sie sichern muss, da Jenkins häufig Dinge aufteilt, z Wenn ich sie in Git / GitHub habe, kann ich die fehlenden Daten leicht vergleichen und finden und sie wieder hinzufügen oder eine bestimmte Datei wiederherstellen. Es gibt einige Plugins, um Änderungen im Verlauf zu speichern, aber ich fand es nicht nützlich.
Kenorb

Sie speichern die Passwörter in Git? Verschlüsseln Sie sie? Verwenden Sie Pipelines auch als Code?
030

3
@ 030 Jenkins verschlüsselt Kennwörter / Anmeldeinformationen standardmäßig, Sie können sie jedoch problemlos entschlüsseln . Ohne den Hauptschlüssel (der nicht Bestandteil des Backups sein sollte) oder den Zugriff auf Jenkins kann dies jedoch niemand anderes. Ich verwende Pipeline nicht als Code.
Kenorb

Wie testen Sie die Integrität dieses Backups in Git? ZB dreht man eine virtuelle Maschine oder ein Docker-System hoch, hängt das Git-Repo ein und prüft, ob alles noch funktioniert?
030

11

Wenn Ihre Jenkins-Jobs in einer Jenkins-Datei definiert sind, können Sie sie in einem Git-Repository speichern und mithilfe von Pipeline laden .

Da leider nicht alle Jenkins-Plugins Jenkinsfile und Pipeline unterstützen, müssen Sie neue Jenkins-Dateien manuell erstellen, wenn Sie vorhandene Jobs in dieses Format verschieben möchten.


9

Das SCM Sync Configuration Plugin macht genau das, was Sie wollen. Funktioniert entweder mit svn oder git, um Ihre Jenkins-Kern- und Jobkonfiguration zu sichern, sodass Sie leicht nachverfolgen können, wer Änderungen vorgenommen hat, sowie eine Sicherung durchführen können.


1
Ich habe buchstäblich den Ordner $ JENKINS_HOME tariert, aber das scheint soooo viel besser zu sein.
MrMesees

2
Das Plugin scheint ziemlich inaktiv / tot zu sein - ist es wirklich funktionsfähig und auf dem Stand von 2017?
Tuukka Mustonen

5

Es gibt nur wenige Möglichkeiten, Jenkins-Daten und Masterkonfigurationen zu sichern. Die beste Möglichkeit zum Sichern ist die Verwendung des Thinbackup-Plugins. Sie können zeitnahe Sicherungen mit cron-Ausdrücken planen. Sie können auch eine vollständige Sicherung und eine inkrementelle Sicherung konfigurieren.

Eine andere Möglichkeit zum Sichern von Daten und der Konfiguration besteht darin, den Datenträger-Snapshot Ihres Jenkins-Masterservers zu erstellen. Der ideale Weg, dies zu tun, indem Sie eine Festplatte einhängen und das Konfigurationsverzeichnis von jenkins mit dem Einhängepunkt der Festplatte verknüpfen

Beide Szenarien werden in diesem Blogbeitrag ausführlich erläutert . Sie erhalten eine bessere Vorstellung und Schritte für die Konfigurationen.


3

Ich verwende Skripte von sue445/jenkins-backup-script.

Es archiviert Jenkins Einstellungen und Plugins wie:

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

Verwendungszweck

./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

3

Sie können das thinBackup- Plugin ausprobieren (auch wenn es nicht aktiv gewartet wird) [wenn Sie nur ein logisches Backup erstellen möchten] (dh die meisten Konfigurations-XML-Dateien, Jobs, Knoten usw.). Die Backup-Größe wird nicht sehr groß sein.


1

Ich musste ein Jenkins von einer Windows Server-Instanz auf eine andere migrieren. Endlich habe ich es so geschafft:

  • Stoppen Sie den Jenkins-Service (wenn Sie es sich leisten können)
  • Kopiere den gesamten Jenkins-Ordner (standardmäßig C:\Program Files x86\Jenkins)
  • Einfügen in die neue Instanz
  • Gehen Sie in das Verzeichnis und führen Sie es aus jenkins.exe install

Dadurch werden die frisch eingefügten Jenkins als Dienst auf der neuen Maschine registriert und funktionieren zu 100% gleich.

Wenn dies funktioniert, kopieren Sie den Jenkins-Ordner irgendwo, wenn Sie zur zukünftigen Sicherheit ein Backup benötigen. Es wird wie ein Schnappschuss funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.