Jenkins - wie man einen bestimmten Zweig baut

94

Dies ist nicht so einfach wie nur ein parametrisierter Build. Ich habe bereits einen bestimmten Erstellungsprozess, der erstellt und bereitgestellt wird, wenn einer dieser Zweige an GitHub gesendet wird:

Geben Sie hier die Bildbeschreibung ein

Also, wenn ich gerade gepusht habe developund es erfolgreich erstellt wurde, wie kann ich einen manuellen Build auslösen und ziehen lassen feature/my-new-feature(ohne a zu tun git push)? Ich habe versucht, den parametrisierten Build zu aktivieren, eine neue Zeichenfolge mit dem Namen branchund dann einen neuen Zweigspezifizierer hinzuzufügen */$branch. Ich lief dann einen Build und Satz branchauf feature/my-new-featureund es immer noch zog aus develop.

Ich würde mich über jede Hilfe freuen!

ffxsam
quelle
Sprechen Sie über Github Webhook. Dies könnte Ihr Problem lösen. willst du das von github auslösen?
Abhijeet Kamble
1
Nein, die GitHub-Integration funktioniert bereits. Ich muss wissen, wie man einen bestimmten Zweig manuell erstellt.
ffxsam
3
Ich habe das gleiche Problem. Der Job ist zum Erstellen verschiedener Zweige konfiguriert und wird durch einen Git-Hook ausgelöst. Wenn ich jedoch einen bestimmten Zweig manuell erstellen möchte (ohne neue Änderungen in GIT), klicke ich auf "Jetzt erstellen", aber es wird immer der zuletzt ausgecheckte Zweig erstellt. Habe auch verschiedene Build-Eigenschaften ausprobiert.
Cornz
Wenn Ihr Parameter branch heißt, müssen Sie ihn nur $branchim Feld branch specifier angeben.
Alexey
1
@Alexey, aber während des automatisch initiierten Builds wird dies $branchvermutlich zu einer leeren Zeichenfolge führen.
Nakilon

Antworten:

108

Die beste Lösung kann sein:

Fügen Sie dem vorhandenen Job einen Zeichenfolgenparameter hinzu Geben Sie hier die Bildbeschreibung ein

Dann im Source Code ManagementAbschnitt Update Branches to build, um den von Ihnen definierten String-Parameter zu verwendenGeben Sie hier die Bildbeschreibung ein

Wenn Sie ein Kontrollkästchen mit der Bezeichnung sehen Lightweight checkout, stellen Sie sicher, dass es deaktiviert ist.

Die in den Bildern angegebene Konfiguration weist den Jenkins-Job an, ihn masterals Standardzweig zu verwenden, und bei manuellen Builds werden Sie aufgefordert, Zweigdetails einzugeben (FYI: Standardmäßig ist er auf eingestellt master).Geben Sie hier die Bildbeschreibung ein

Ranjiths
quelle
4
Der Build-Master schneidet standardmäßig nicht für einen generischen Entwicklungs-Build, der alle Entwicklungszweige erstellen soll.
static_rtti
9
Mein Gott, das ist so beschissen. Warum behält Jenkins den Branches to buildAbschnitt nicht mit dem verdammten Git-Repo, für das er gilt? Es ist eine dumme PITA, dies tun zu müssen, um einen zu erstellenden Zweig anzugeben.
Alex Zavatone
9
Dong das funktioniert nicht (für mich). Am Ende versucht Jenkins, einen Zweig zu überprüfen, git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --pruneder offensichtlich ungültig ist.
Liam
1
Dies wird als Fehler bei Jenkins protokolliert. Es ist also schwer zu erkennen, wie dies jemals funktioniert hat.
Liam
19
@Liam Wie im Bug-Ticket vorgeschlagen, müssen Sie "Lightweight Checkout" deaktivieren, damit dies funktioniert.
Asmaier
10

Ich glaube nicht, dass Sie beide innerhalb desselben Jenkins-Jobs arbeiten können. Sie müssen lediglich einen neuen Jenkins-Job konfigurieren, der Zugriff auf Ihren Github hat, um Zweige abzurufen, und dann können Sie auswählen, welchen Sie manuell erstellen möchten.

Markieren Sie es einfach als parametrisierten Build, geben Sie einen Namen und einen Parameter an, der als konfiguriert ist git parameter

Geben Sie hier die Bildbeschreibung ein

und jetzt können Sie git-Optionen konfigurieren:

Geben Sie hier die Bildbeschreibung ein

smohamed
quelle
7
Dieser Git-Parameter ist ein Jenkins-Plugin? Ich sehe keine Möglichkeit, diese Art von Parameter hinzuzufügen. Wenn es sich um ein Plugin handelt, können Sie in der Antwort darauf verweisen?
Leandro David
@LeandroDavid yes Git Parameter ist ein Plugin, das installiert werden muss. Danach wird diese Option unter Parameter hinzufügen angezeigt.
Gotosachin
9

Verwenden Sie zum Auschecken des Zweigs über Jenkins-Skripte Folgendes:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}
Igor L.
quelle
1
Ich weiß, dass dies nicht genau das ist, worum es bei der Frage geht, aber ich habe nach diesen Informationen gesucht und Google hat diese Website immer wieder als Antwort vorgeschlagen.
Igor L.
das gleiche hier bro. Können Sie die Antwort auf die genaue Antwort zu finden
thinkingmonster
0

Dies ist eine Erweiterung der Antwort von Ranjith

Ich würde vorschlagen, dass Sie einen Auswahlparameter-Build auswählen und die Zweige angeben, die Sie erstellen möchten. Active Choice-Parameter

Danach können Sie die zu erstellenden Zweige angeben. Zum Bauen verzweigen

Wenn Sie nun Ihr Projekt erstellen, erhalten Sie "Mit Parametern erstellen, in denen Sie den zu erstellenden Zweig auswählen können".

Sie können auch ein grooviges Skript schreiben, um alle Ihre Zweige im aktiven Auswahlparameter abzurufen.

Ashish Chandra
quelle
Bitte erläutern Sie. TeamCity macht das standardmäßig und dennoch kann Jenkins nicht einmal seine eigenen Schuhe binden !!!
C Johnson
0

Geben Sie hier die Bildbeschreibung ein

Unter Build-Trigger gibt es eine Option zum Konfigurieren

Überprüfen Sie die GitHub-Zweige

Ein Hook wird erstellt und dann können Sie aus Jenkins einen beliebigen Zweig erstellen, wenn Sie Github-Zweige auswählen Geben Sie hier die Bildbeschreibung ein

Ich hoffe es hilft :)

Rohit Thomas
quelle
Ich versuche, dieses Plugin mit diesem Setup zu verwenden, kann jedoch keinen Weg finden, um den Job zu starten. Gibt es eine andere Möglichkeit zu überprüfen, ob die Ereignisse korrekt von gh kommen?
Vito De Tullio
Erhalten Sie die Run Branch TriggerOption, es scannt Git Repo nach allen verfügbaren Zweigen ... Schauen Sie auch einfach in Jenkins Protokolle -> unter Verwalten von Jenkins ... um zu sehen, ob ein Fehler aufgetreten ist
Rohit Thomas
1
Bitte erläutern Sie, Ihre Beschreibung ist zu klein und zu kurz.
C Johnson