2013-03-11 12 views
30

Wir haben viele Entwickler erstellen Feature-Zweige, die ich gerne bauen würde. Jeden Abend führen wir ein Tool für die Codequalität, das in jedem Zweig ausgeführt werden muss. Ich möchte auch keine statische Konfiguration, da sich die Anzahl der Zweige alle paar Wochen ändert.Hudson/Jenkins Git bauen alle Zweige

Antwort

35

In Git-Konfiguration gibt es ein Feld 'Branch-Spezifizierer (leer für Standard):' wenn Sie dort setzen ** es wird alle Zweige von allen Fernbedienungen erstellen.

mit dem Sie eine Umgebungsvariable $ {GIT_BRANCH} z. um einen Titel für den Build unter Verwendung https://wiki.jenkins-ci.org/display/JENKINS/Build+Name+Setter+Plugin oder für andere Zwecke

+0

Dadurch werden alle Zweige bauen, wenn sie zu engagieren. Ich möchte jedoch alle Zweige zu einer bestimmten Zeit erstellen. – babsher

+0

Hmm, also willst du den Zweig bauen, der ... daran hat sich nichts geändert? Dies ist nicht sehr typisch, da wir den gleichen Code am nächsten Tag gleich machen sollten. Sie können erfolgreich "Arbeitsbereich vor dem Erstellen löschen" auswählen. Jenkins wird den vorherigen Build nicht im Auge behalten, vielleicht wird er versuchen, alle Zweige zu bauen, wie es für einen neuen Job tut. –

+10

Auch wenn es keine Codeänderungen gibt, wird der Aufbau der gleichen Verzweigung Tag für Tag oft zeitbezogene Fehler erfassen - z. wenn sie sich am Ersten jedes Monats manifestieren, oder wenn der Mond immer kühler wird. – mkirk

3

zu setzen Ich hatte das gleiche Problem zu lösen. Erstellen Sie speziell eine Zip-Datei aller Zweige und bieten Sie diese als Artefakte an, die in verschiedenen Testaufträgen verwendet werden sollen.

In "Branchen zu bauen", setzen Sie "**"

Dann Execute-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) 

Diese Liste der Filialen liest, Kassen jeder von ihnen getrennt und ermöglicht Dinge zu tun in jeder von ihnen. Der < < < Befehl wandelt diese Ausgabe:

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

in der Kasse verwendbare Liste:

branch1 
master 
secondbranch 
+0

Ich gab Ihnen +1 dafür: Git-Zweig -r | grep -v "KOPF ->" | xargs -L 1 | Schnitt -d '/' -f2. –