C’è un modo per mantenere i file di configurazione di Hudson / Jenkins nel controllo del codice sorgente?

Sono nuovo di Hudson / Jenkins e mi chiedevo se c’è un modo per controllare i file di configurazione di Hudson al controllo del codice sorgente.

Idealmente, voglio essere in grado di fare clic su un pulsante nell’interfaccia utente che dice “salva configurazione” e fare in modo che i file di configurazione di Hudson siano registrati nel controllo del codice sorgente.

Risposta più utile

C’è un plugin chiamato plugin di configurazione SCM Sync .


Risposta originale

Dai un’occhiata alla mia risposta a una domanda simile. L’idea di base è usare il filesystem-scm-plugin per rilevare le modifiche ai file xml. La tua seconda parte avrebbe commesso le modifiche a SVN.

EDIT: Se trovi un modo per determinare l’utente per una modifica, faccelo sapere.

EDIT 2011-01-10 Nel frattempo c’è un nuovo plugin: plugin di configurazione di SCM Sync . Attualmente funziona solo con subversion e git, ma è previsto il supporto per più repository. Lo sto utilizzando dalla versione 0.0.3 e ha funzionato bene finora.

Si noti che Vogella ha un recente (gennaio 2014, rispetto alla domanda dell’OP di gennaio 2010) e una presa diversa su questo.
Considera che il plugin di configurazione di SCM Sync può generare molti commit.
Quindi, invece di affidarsi a un plug-in e a un processo automatizzato, gestisce manualmente la stessa funzionalità:

Memorizzare le informazioni sul lavoro di Jenkins in Git

Ho trovato la quantità di commit un po ‘schiacciante, quindi ho deciso di controllare i commit manualmente e di salvare solo le informazioni sul lavoro e non sulla configurazione di Jenkins.
Per questo passare alla directory dei lavori di Jenkins (Ubuntu: /var/lib/jenkins/jobs ) ed eseguire il comando ” git init “.

Ho creato il seguente file .gitignore per memorizzare solo le informazioni sui lavori Git:

 builds/ workspace/ lastStable lastSuccessful nextBuildNumber modules/ *.log 

Ora puoi aggiungere e commettere modifiche a tuo piacimento.
E se aggiungi un altro telecomando al tuo repository Git, puoi trasferire la tua configurazione su un altro server.

Alberto in realtà consiglia di aggiungere anche (in $JENKINS_HOME ):

  • jenkins own config ( config.xml ),
  • i plugin jenkins plugin ( hudson*.xml ) e
  • le configurazioni utente ( users/*/config.xml )

Per gestire manualmente la configurazione con Git, potrebbe essere utile il seguente file .gitignore.

 # Miscellaneous Hudson litter *.log *.tmp *.old *.bak *.jar *.json # Generated Hudson state /.owner /secret.key /queue.xml /fingerprints/ /shelvedProjects/ /updates/ # Tools that Hudson manages /tools/ # Extracted plugins /plugins/*/ # Job state builds/ workspace/ lastStable lastSuccessful nextBuildNumber 

Vedi https://gist.github.com/780105 e http://bit.ly/i58rg2 per maggiori dettagli.

C’è un nuovo plug-in di configurazione della sincronizzazione di SCM che fa esattamente quello che stai cercando.

Configurazione SCM Sync Il plugin Hudson ha due caratteristiche principali:

  • Mantieni sincronizzati i file hudson config.xml (e altre risorse) con un repository SCM
  • Tieni traccia delle modifiche (e dell’autore) apportate su ogni file con messaggi di commit

Non ho ancora provato questo, ma sembra promettente.

Il modo in cui preferisco è quello di escludere tutto nella cartella principale di Jenkins, ad eccezione dei file di configurazione che vuoi veramente essere nel tuo VCS. Ecco il file .gitignore che utilizzo:

 * !.gitignore !/jobs/*/*.xml !/*.xml !/users/*/config.xml !*/ 

Questo ignora tutto ( * ) tranne ( ! ) .gitignore stesso, i lavori / progetti, il plugin e altri file di configurazione importanti e dell’utente.

Vale anche la pena considerare di includere la cartella dei plugins . Plugin aggiornati fastidiosamente dovrebbero essere inclusi …

Fondamentalmente questa soluzione rende più semplice il futuro per gli aggiornamenti di Jenkins / Hudson perché i nuovi file non sono automaticamente inclusi. Hai appena capito cosa vuoi veramente.

Puoi trovare i file di configurazione nella cartella principale di Jenkins (ad esempio /var/lib/jenkins ).

Per mantenerli in VCS, accedi prima come Jenkins ( sudo su - jenkins ) e crea le sue credenziali git:

 git config --global user.name "Jenkins" git config --global user.email "[email protected]" 

Quindi inizializzare, aggiungere e salvare i file di base come:

 git init git add config.xml jobs/ .gitconfig git commit -m'Adds Jenkins config files' -a 

considera anche la possibilità di creare .gitignore con i seguenti file da ignorare (personalizzare secondo necessità):

 # Git untracked files to ignore. # Site-wide configuration files. *.xml # Except root configuration. !config.xml # Cache. .cache/ # Fingerprint records. fingerprints/ # Working directories. workspace/ # Secret files. secrets/ secret.* *.enc *.key users/ id_rsa # Plugins. plugins/ # State files. *.state # Job state files. builds/ lastStable lastSuccessful nextBuildNumber # Updates. updates/ # Hidden files. .* # Except git config files. !.git* !.ssh/ # User content. userContent/ # Log files. logs/ *.log # Miscellaneous litter *.tmp *.old *.bak *.jar *.json *.lastExecVersion 

Quindi aggiungilo: git add .gitignore .

Al termine, è ansible aggiungere i file di configurazione del lavoro, ad es

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

Infine aggiungi e trasferisci qualsiasi altro file, se necessario, quindi trasferiscilo nel repository remoto dove vuoi conservare i file di configurazione.


Quando i file Jenkins vengono aggiornati, è necessario ricaricarli ( Ricarica configurazione da disco ) o eseguire la reload-configuration dalla CLI di Jenkins.

Answer from Mark ( https://stackoverflow.com/a/4066654/142207 ) dovrebbe funzionare per SVN e Git (anche se la configurazione Git non ha funzionato per me).

Ma se ne hai bisogno per lavorare con il repository Mercurial, crea un lavoro con il seguente script:

 hg remove -A || true hg add ../../config.xml hg add ../../*/config.xml if [ ! -z "`hg status -admrn`" ]; then hg commit -m "Scheduled commit" -u [email protected] hg push fi 

Ho scritto un plugin che ti permette di controllare le istruzioni di Jenkins nel controllo del codice sorgente. Basta aggiungere un file .jenkins.yml con il contenuto:

 script: - make - make test 

e Jenkins lo farà:

inserisci la descrizione dell'immagine qui

Ho controllato interamente hudson, puoi usare questo come punto di partenza https://github.com/morkeleb/continuous-delivery-with-hudson

Ci sono benefici nel mantenere intero hudson in git. Tutte le modifiche di configurazione sono registrate e puoi testare il test abbastanza facilmente su una macchina e poi aggiornare le altre macchine usando git pull.

Lo abbiamo usato come piastra di riscaldamento per la nostra configurazione di consegna continua hudson al lavoro.

Saluti Morten

Un .gitignore più preciso, ispirato alla risposta di nepa :

 * !.gitignore !/jobs/ !/jobs/*/ /jobs/*/* !/jobs/*/config.xml !/users/ !/users/*/ /users/*/* !/users/*/config.xml !/*.xml 

Ignora tutto tranne i .xml configurazione .xml e .gitignore stesso. (la differenza con gitignore di nepa è che non “annulla” tutte le directory di primo livello ( !*/ ) come i logs/ , cache/ , ecc.)