Ich verwende das Jenkins Multiple SCM-Plugin, um drei Git-Repositorys in drei Unterverzeichnissen in meinem Jenkins-Job auszuchecken. Ich führe dann einen Befehlssatz aus, um einen einzelnen Satz von Artefakten mit Informationen und Code zu erstellen, die aus allen drei Repositorys stammen.
Mehrere SCM werden jetzt abgeschrieben, und im Text wird empfohlen, auf Pipelines umzusteigen. Ich habe es versucht, aber ich kann nicht herausfinden, wie es funktioniert.
Hier ist die Verzeichnisstruktur, die ich von der obersten Ebene meines Jenkins-Jobverzeichnisses aus sehen möchte:
$ ls
Combination
CombinationBuilder
CombinationResults
In jedem dieser drei Unterverzeichnisse ist ein einzelnes Git-Repo ausgecheckt. Beim Multiple SCM habe ich git verwendet und dann das Verhalten "Auschecken in ein Unterverzeichnis" hinzugefügt. Hier war mein Versuch mit einem Pipeline-Skript:
node('ATLAS && Linux') {
sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
sh('cd CalibrationResults')
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
sh('cd ..')
sh('[ -e Combination ] || mkdir Combination')
sh('cd Combination')
git url: 'https://github.com/AtlasBID/Combination.git'
sh('cd ..')
sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
sh('cd CombinationBuilder')
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
sh 'cd ..'
sh('ls')
sh('. CombinationBuilder/build.sh')
}
Der Befehl git scheint jedoch im obersten Verzeichnis des Arbeitsbereichs ausgeführt zu werden (was sinnvoll ist), und auch gemäß der Syntax scheint es kein Verhalten beim Auschecken in Unterverzeichnisse zu geben.
quelle
Antworten:
Mit dem
dir
Befehl können Sie einen Pipeline-Schritt in einem Unterverzeichnis ausführen:node('ATLAS && Linux') { dir('CalibrationResults') { git url: 'https://github.com/AtlasBID/CalibrationResults.git' } dir('Combination') { git url: 'https://github.com/AtlasBID/Combination.git' } dir('CombinationBuilder') { git url: 'https://github.com/AtlasBID/CombinationBuilder.git' } sh('ls') sh('. CombinationBuilder/build.sh') }
quelle
git url: 'https://github.com/AtlasBID/CombinationBuilder.git', credentialsId: 'foo'
wo 'foo' eine Berechtigungsnachweis-ID von Jenkins ist.git
ist hier: jenkins.io/doc/pipeline/steps/gitSie können diese drei Git-Repositorys in drei Unterverzeichnisse auschecken, indem Sie den SCM-Schritt zum Auschecken dreimal wie folgt ausführen:
quelle
Hier ist meins
quelle
Wenn Ihr Repository über Submodule verfügt, verwenden Sie git checkout
Generiert mit dem Checkout Git Snippet Generator
quelle