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

StackOverflow https://stackoverflow.com/questions/2087142

Domanda

Sono nuovo di Hudson / Jenkins e chiedevo se c'è un modo per controllare in Hudson file di configurazione del controllo del codice sorgente.

Idealmente voglio essere in grado di fare clic su alcuni pulsanti dell'interfaccia utente che dice "salva configurazione" e hanno il Hudson file di configurazione selezionata nel controllo del codice sorgente.

È stato utile?

Soluzione

Più la Risposta utile

C'è un plugin che si chiama SCM di Sincronizzazione di configurazione del plugin.


Originale Risposta

Guarda la mia risposta a una simile domanda.L'idea di base è quello di utilizzare la filesystem-scm-plugin per rilevare le modifiche apportate al file xml.La tua seconda parte sarebbe commettere le modifiche SVN.

EDIT: Se si trova un modo per determinare l'utente per un cambiamento, facci sapere.

EDIT 2011-01-10 Intanto c'è un nuovo plugin: SCM di Sincronizzazione di configurazione del plugin.Attualmente funziona solo con subversion e git, ma il supporto per più repository è prevista.Io la sto usando dalla versione 0.0.3 e ha funzionato bene finora.

Altri suggerimenti

Si noti che Vogella ha un recente (gennaio 2014, rispetto alla domanda del PO gennaio 2010) e diverso prendere su questo.
Si consideri che il SCM Sync configurazione del plugin in grado di generare un sacco di si impegna.
Così, invece di basarsi su un plugin e un processo automatizzato, riesce manualmente la stessa caratteristica:

Conservazione del lavoro informazioni di Jenkins in Git

  

Ho trovato la quantità di commette un po 'opprimente, così ho deciso di controllare i commit manualmente e di salvare solo le informazioni di lavoro e non la configurazione Jenkins.
  Per questo interruttore nella directory di lavoro Jenkins. (Ubuntu: /var/lib/jenkins/jobs) ed eseguire il comando “git init

     

ho creato il seguente file .gitignore per memorizzare solo le informazioni di lavoro Git:

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

Ora è possibile aggiungere e impegnarsi modifiche a proprio piacimento.
  E se si aggiunge un altro remoto al repository Git si può spingere la configurazione a un altro server.

Alberto in realtà consigliamo di aggiungere pure (in $JENKINS_HOME):

  • Jenkins propria configurazione (config.xml),
  • The Jenkins plugin configs (hudson*.xml) e
  • il file di configurazione degli utenti (users/*/config.xml)

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

# 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

questo GitHub Gist e questo post del blog per ulteriori dettagli.

C'è un nuovo SCM Configurazione Sync plug-in , che fa esattamente quello che stai cercando.

  

plug-SCM Sync Configurazione Hudson   si rivolge a 2 caratteristiche principali:

     
      
  • Tenere Sync'ed tua config.xml (e di altri le risorse) file Hudson con   repository SCM
  •   
  • Rileva modifiche (e autore) effettuate su ogni file con messaggi di commit
  •   

Non ho effettivamente ancora provato questo, ma sembra promettente.

È possibile trovare i file di configurazione in Jenkins cartella home (ad esempio, /var/lib/jenkins).

Per tenerli in VCS, il primo login come Jenkins (sudo su - jenkins) e creare le sue credenziali git:

git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"

Poi inizializzare, aggiungere e commettere i file di base come ad esempio:

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

prendere in considerazione anche la creazione di .gitignore con i seguenti file da ignorare (personalizzare in base alle esigenze):

# Git untracked files to ignore.

# 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 aggiungerlo: git add .gitignore

.

Una volta fatto, è possibile aggiungere i file di configurazione di posti di lavoro, per esempio.

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

Infine aggiungere e commettere qualsiasi altro file, se necessario, quindi spingerla al repository remoto in cui si desidera mantenere i file di configurazione.


Quando i file Jenkins vengono aggiornati, è necessario ricaricare loro ( Configurazione Ricarica dal disco ) o reload-configuration eseguito da Jenkins CLI.

Il modo che preferisco è di escludere tutto nella cartella home Jenkins tranne i file di configurazione che si vuole veramente essere nel vostro VCS. Ecco il file .gitignore che uso:

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

Questo ignora tutto (*) ad eccezione (!) .gitignore sé, i lavori / progetti, il plugin e altri file importanti e l'utente di configurazione.

E 'anche la pena di considerare per includere la cartella plugins. Fastidiosamente plugin aggiornati dovrebbero essere inclusi ...

In pratica questa soluzione rende più facile per i futuri aggiornamenti Jenkins / Hudson, perché i nuovi file non sono automaticamente portata. Basta salire sul screeen cosa si vuole veramente.

Un .gitignore più accurato, ispirato alla risposta da Nepa :

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

Si ignora tutto tranne che per i file di configurazione e .xml .gitignore stessa. (La differenza di Nepa s ' .gitignore è che non 'non ignorare più' tutte le directory di primo livello (!*/) come logs/, cache/, ecc.)

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

Ma se avete bisogno di lavorare con repo Mercurial, creare un lavoro con script seguente:

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

scritto un plug-in che consente di controllare le vostre istruzioni Jenkins nel controllo del codice sorgente. Basta aggiungere un file .jenkins.yml con il contenuto:

script:
    - make
    - make test

e Jenkins lo farà:

entrare descrizione dell'immagine qui

ho controllato Hudson del tutto, si potrebbe usare questo come punto di partenza https: // github.com/morkeleb/continuous-delivery-with-hudson

Ci sono benefici per mantenere tutta la Hudson a git. Tutte le modifiche di configurazione vengono registrati e si può testare il TestUp abbastanza facilmente su una macchina e quindi aggiornare l'altra macchina (s) utilizzando git pull.

Abbiamo usato questo come un testo standard per la nostra messa a punto Hudson erogazione continua sul posto di lavoro.

Saluti Morten

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top