Verwenden von Jenkins 1.501 und Jenkins Git Plugin 1.1.26
Ich habe 3 verschiedene Git-Repos mit jeweils mehreren Projekten.
Jetzt muss ich alle Projekte aus den 3 Git Repos in den gleichen Arbeitsbereich auf einem Jenkins Slave auschecken. Ich habe jedes Git-Repo definiert in: Quellcodeverwaltung: Mehrere SCMs . Jedes Mal, wenn ein Repo ausgecheckt wird, wird das vorherige Repo (und die zugehörigen Projekte) gelöscht.
Ich habe folgendes gelesen:
http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html
aber es hilft nicht wirklich. Ich habe versucht, denselben Ordner im lokalen Unterverzeichnis für Repo (optional) für alle Repos anzugeben, aber es gibt das gleiche Ergebnis.
Wenn dies mit Jenkins einfach unmöglich ist, könnten einige vorgefertigte Schritte / Skripte verwendet werden, um die Projekte an den richtigen Ort zu verschieben. Es ist keine Option, die Build-Konfiguration der Projekte zu ändern.
Mit dem Multiple SCMs Plugin:
Erstellen Sie einen anderen Repository-Eintrag für jedes Repository, das Sie auschecken müssen (Hauptprojekt oder Abhängigkeitsprojekt).
Suchen Sie für jedes Projekt im Menü "Erweitert" (im zweiten Menü "Erweitert" gibt es zwei Schaltflächen mit der Bezeichnung "Erweitert" für jedes Repository) das Textfeld "Lokales Unterverzeichnis für Repo (optional)". Dort können Sie das Unterverzeichnis im Verzeichnis "Arbeitsbereich" angeben, in das Sie das Projekt kopieren möchten. Sie könnten das Dateisystem meines Entwicklungscomputers zuordnen.
Das "zweite erweiterte Menü" existiert nicht mehr. Stattdessen müssen Sie die Schaltfläche "Hinzufügen" (im Abschnitt "Zusätzliche Verhaltensweisen") verwenden und "In ein Unterverzeichnis auschecken" auswählen.
Hoffentlich hilft das.
quelle
Da Multiple SCMs Plugin veraltet ist.
Mit Jenkins Pipeline ist es möglich, mehrere Git-Repos auszuchecken und nach dem Erstellen mit Gradle
Möglicherweise möchten Sie die Verwendung von Git-Submodulen anstelle einer benutzerdefinierten Pipeline wie dieser in Betracht ziehen .
quelle
dir
Block ist der Schlüssel, ich konnte nicht herausfinden, warum ich nur das zuletzt geklonte Repo im Arbeitsbereich meines Jobs sah.23 changes from repo XXX, 3 changes from repo YYY
oder etwas kompakteres in dieser Richtung.Ich habe das Multiple SCMs Plugin in Verbindung mit dem Git Plugin erfolgreich mit Jenkins verwendet.
quelle
Abhängig von den Beziehungen der Repositorys besteht ein anderer Ansatz darin, das andere Repository (Repositorys) als Git-Submodule zu einem der Repositorys hinzuzufügen . Ein Git-Submodul erstellt einen Verweis auf die anderen Repos. Diese Submodul-Repos werden nur geklont, wenn Sie
--recursive
beim Klonen des "Superprojekts" das Flag angeben. (offizieller Begriff) .Hier ist der Befehl zum Hinzufügen eines Submoduls zum aktuellen Projekt:
git submodule add <repository URI path to clone>
Wir verwenden Jenkins v1.645 und das Git-SCM erstellt sofort einen rekursiven Klon für Superprojekte. Voila Sie erhalten die Superprojektdateien und alle abhängigen (Submodul-) Repodateien in ihren jeweiligen Verzeichnissen im selben Jenkins-Jobarbeitsbereich.
Nicht dafür bürgen, dass dies der richtige Ansatz ist, sondern ein Ansatz.
quelle
Jenkins: Multiple SCM - veraltet. GIT Plugin - funktioniert nicht für mehrere Repos.
Scripting / Pipeline als Code - ist der richtige Weg.
quelle
Ich hatte auch dieses Problem. Ich habe es mit Trigger / Call Builds für andere Projekte gelöst. Für jedes Repository rufe ich das Downstream-Projekt mit Parametern auf.
Hauptprojekt:
Dann rufe ich für jedes Repository ein nachgeschaltetes Projekt wie folgt auf:
Downstream-Projekt: Linux-Tag-Checkout:
quelle
Das Auschecken von mehr als einem Repo gleichzeitig in einem einzelnen Arbeitsbereich ist möglich mit Jenkins + Git Plugin (vielleicht nur in neueren Versionen?).
Wählen Sie im Abschnitt "Source-Code-Management" nicht "Git", sondern "Multiple SCMs" und fügen Sie mehrere Git-Repositorys hinzu.
Stellen Sie sicher, dass Sie in allen außer einem als "Zusätzliches Verhalten" die Aktion "In ein Unterverzeichnis auschecken" hinzufügen und ein einzelnes Unterverzeichnis angeben.
quelle
Wir verwenden Git-Repo , um unsere mehreren GIT-Repositorys zu verwalten. Es gibt auch ein Jenkins Repo-Plugin , mit dem Sie alle oder einen Teil der von git-repo verwalteten Repositorys im selben Jenkins-Jobarbeitsbereich auschecken können.
quelle