2013-03-11 35 views
30

Abbiamo molti sviluppatori che creano feature branch che vorrei costruire. Ogni sera eseguiamo uno strumento di qualità del codice che deve essere eseguito su ogni ramo. Inoltre, non mi piacerebbe una configurazione statica perché il numero di rami cambia ogni poche settimane.Hudson/Jenkins Git crea tutti i rami

risposta

35

Nella configurazione Git è presente un campo "Specifica ramo (vuoto per impostazione predefinita): ' se ci si inserisce ** costruirà tutti i rami da tutti i telecomandi.

Avendo che è possibile utilizzare una variabile d'ambiente $ {GIT_BRANCH} ad es. per impostare un titolo per la compilazione utilizzando https://wiki.jenkins-ci.org/display/JENKINS/Build+Name+Setter+Plugin o per altri scopi

+0

in questo modo costruire tutti i rami quando sono impegnati a. Tuttavia, voglio costruire tutti i rami in un momento specifico. – babsher

+0

Hmm quindi vuoi costruire il ramo che ... non ci sono stati cambiamenti in esso? Questa non è una cosa molto tipica da fare, dato che dovremmo far funzionare lo stesso codice lo stesso il giorno dopo. È possibile selezionare con successo "Elimina spazio di lavoro prima della creazione". Jenkins non terrà traccia della precedente build, forse proverà a costruire tutti i rami, come fa per un nuovo lavoro. –

+10

Anche se non ci sono modifiche al codice, la creazione dello stesso ramo giorno dopo giorno spesso genera errori relativi al tempo - ad es. quando si manifestano il primo di ogni mese o quando la luna sta calando gibbosa. – mkirk

3

Ho avuto lo stesso problema da risolvere. In particolare, creare un file zip di tutti i rami e offrire quelli come artefatti da utilizzare in diversi lavori di test.

In "rami per costruire", mettere "**"

Poi, eseguire la shell:

while read -ra ITEM; do 
    for i in "${ITEM[@]}"; do 
    git checkout $i 
    <do your stuff> 
    done 
done <<< $(git branch -r | grep -v "HEAD ->" | xargs -L 1 | cut -d'/' -f2) 

Questa legge l'elenco delle filiali, casse ciascuno di loro separatamente e permette di fare cose in ognuno di loro. Il comando < < < converte questa uscita:

origin/HEAD -> origin/master 
    origin/branch1 
    origin/master 
    origin/secondbranch 

in cassa elenco utilizzabile:

branch1 
master 
secondbranch 
+0

ti ho dato +1 per questo: git branch -r | grep -v "HEAD ->" | xargs -L 1 | cut -d '/' -f2. –

1

vecchia domanda, ma la risposta un po 'più adatta. Il multi-ramo plugin di seguito consente di creare un tipo di elemento di costruzione che i fan fuori sottoprogetti con rami, la sincronizzazione di configurazione automaticamente dal livello superiore al sotto-progetti

https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin

Per un approccio un po 'più coinvolti, Seed plug-ti dà un sacco di flessibilità che definisce i job secondari

https://github.com/jenkinsci/seed-plugin/wiki

Problemi correlati