Come si esegue il backup dei lavori Jenkins e delle configurazioni principali?


56

Vorrei fare il backup di tutti i lavori Jenkins e di configurare i file. Qual è il modo più semplice per farlo?


Cosa hai provato
030

1
Ho provato questo .
Kenorb,

Risposte:


33

Esistono molti modi per farlo, ma il modo più semplice che posso pensare è fare un backup della cartella Home di Jenkins.

Puoi vedere dov'è la tua casa Jenkins con:

echo $JENKINS_HOME

E ad esempio, se si desidera solo eseguire il backup dei lavori, è possibile visitare:

cd $JENKINS_HOME/jobs

E fai un backup per quella cartella.

Tutta quella configurazione sarà un mucchio di file XML .

Se stai usando l' immagine docker Jenkins ufficiale , la casa sarà su:

/var/jenkins_home

2
Avevo bisogno di passare all'utente jenkins per avere accesso alla $JENKINS_HOMEvariabile d'ambiente:, sudo su -s /bin/bash jenkinse quindi echo $JENKINS_HOME, che per me era/var/lib/jenkins
Bryce Guinta,

2
Il problema con il backup di "lavori" dell'intera cartella è che verranno copiate anche le esecuzioni dei lavori, ciò può significare molti GB.
Mike Argyriou,

Se il servizio di Jenkins dovrebbe essere riavviato?
Xin Meng,

Jenkins home in MacOS (installazione predefinita di Homebrew): ~ / .jenkins
chuckSaldana

30

Tutti i lavori ( jobs/) e i file di configurazione principali ( config.xml) sono disponibili nella cartella principale di Jenkins ( JENKINS_HOME) nella seguente struttura:

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)

La maggior parte delle configurazioni sono in formato XML, quindi il backup di tutti i .xmlfile dovrebbe essere sufficiente.

Tutte le impostazioni, i log di compilazione e gli archivi degli artefatti sono archiviati nella directory JENKINS_HOME. Basta archiviare questa directory per eseguire il backup. Allo stesso modo, il ripristino dei dati sta semplicemente sostituendo il contenuto della directory JENKINS_HOME da un backup.

I backup possono essere eseguiti senza arrestare il server, ma quando si ripristina, si prega di arrestare il server.


Per backup coerenti è buona norma tenere la JENKINS_HOMEdirectory nel repository Git.

Per esempio:

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

e spingendo i file nel repository esterno. È inoltre possibile aggiungere il seguente .gitignorefile per ignorare alcuni file.

Correlati: esiste un modo per mantenere i file di configurazione di Hudson / Jenkins nel controllo del codice sorgente?


Con quale frequenza crei un backup? Spingi il codice automaticamente in un repository git? Se vero, crei una richiesta pull che deve essere unita manualmente (intervento manuale) per eseguire un controllo di integrità del backup?
030

2
@ 030 Di solito manualmente dopo alcune importanti modifiche, quando so che la configurazione è stabile e ho bisogno di eseguirne il backup, poiché a Jenkins spesso piace rompere le cose, come cambiare da sola gli schiavi da Unix a Windows, rimuovere le password dai moduli, quindi disponendoli in git / GitHub, posso facilmente confrontare e trovare i dati mancanti e aggiungerli nuovamente o ripristinare alcuni file specifici. Ci sono alcuni plugin per mantenere le modifiche alla cronologia, ma non l'ho trovato utile.
Kenorb,

Memorizzi le password in git? Li crittografate? Usi anche pipeline o Pipeline come codice?
030

3
@ 030 Jenkins crittografa password / credenziali per impostazione predefinita, ma è possibile decrittografarle facilmente . Tuttavia, senza la chiave master (che non dovrebbe far parte del backup) o l'accesso a Jenkins, nessun altro può farlo. Non sto usando Pipeline come codice.
Kenorb,

Come testate l'integrità di questo backup in git? Ad esempio, fai girare una macchina virtuale o un sistema docker, monti il ​​repository git e controlli se tutto funziona ancora?
030

11

Se i lavori Jenkins sono definiti in un file Jenkins, è possibile memorizzarlo in un repository git e caricarlo mediante Pipeline .

Sfortunatamente, poiché non tutti i plug-in Jenkins supportano Jenkinsfile e Pipeline, sarà necessario creare manualmente nuovi file Jenkins se si desidera spostare i lavori esistenti in questo formato.


9

Il plug-in di configurazione della sincronizzazione SCM fa esattamente ciò che desideri. Funziona con svn o git per eseguire il backup del core jenkins e della configurazione del lavoro, quindi ti dà un facile monitoraggio su chi ha apportato le modifiche, nonché un backup.


1
Ho letteralmente tarato la cartella $ JENKINS_HOME, ma questo sembra davvero molto meglio.
MrMesees,

2
Che i plugin sembrino piuttosto inattivi / morti - è davvero funzionale e alla pari dal 2017?
Tuukka Mustonen,

5

Esistono pochi modi per eseguire il backup dei dati jenkins e delle configurazioni principali. Il modo migliore per il backup è utilizzare il plug-in Thinbackup. È possibile pianificare backup tempestivi utilizzando espressioni cron. È possibile configurare anche il backup completo e il backup incrementale.

Un altro modo per eseguire il backup dei dati e della configurazione è acquisire l'istantanea del disco del server principale jenkins. Il modo ideale per farlo montando un disco e collegare la directory di configurazione jenkins al punto di montaggio del disco

Entrambi gli scenari sono ben spiegati in questo post del blog . Otterrai un'idea e i passaggi migliori per le configurazioni.


3

Sto usando gli script di sue445/jenkins-backup-script.

Archivia impostazioni e plugin di Jenkins come:

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

uso

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

Puoi provare il plug-in thinBackup (anche se non è attivamente gestito) [se è sufficiente eseguire un backup logico ] (ovvero la maggior parte dei file di configurazione XML, lavori, nodi ecc.). Le dimensioni del backup non saranno enormi.


1

Avevo bisogno di migrare un Jenkins da un'istanza di Windows Server a un'altra. Finalmente sono riuscito a farlo in questo modo:

  • Interrompi il servizio Jenkins (se te lo puoi permettere)
  • Copia l'intera cartella Jenkins (per impostazione predefinita C:\Program Files x86\Jenkins)
  • Incolla sulla nuova istanza
  • Vai all'interno della directory ed esegui jenkins.exe install

Ciò registrerà Jenkins appena incollato come servizio sulla nuova macchina e funzionerà allo stesso modo al 100%.

Se questo funziona, se hai bisogno di un backup solo per sicurezza futura, copia la cartella Jenkins da qualche parte. Funzionerà come un'istantanea.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.