Jenkins Fähigkeiten des gleichen Typs und verschiedener Arten von Jobaufrufen und Parameterübertragung
1. Hintergrund
Stellen Sie vor dem Eingeben des Themas zunächst die Abhängigkeiten zwischen Projekten vor . Was ist eine Abhängigkeit? Beispielsweise muss das Projekt Test1 erstellt werden, nachdem die Test2-Komponente des Projekts abgeschlossen wurde. Dies ist die Abhängigkeit. In der Benutzeroberfläche von Jenkins ist dies die Option für den roten Bereich in Abbildung 1.
Umweltvorbereitung
- ein Computer
- Jenkins-Umgebung (online verfügbar, kann nach Belieben gefunden werden)
2. Gegenseitige Anrufe zwischen Jobs des gleichen Typs
Gegenseitiger Aufruf und Parameterübertragung zwischen Projektjob
Wenn Sie lokale Jenkins verwenden, installieren Sie bitte das Parametrisierte Trigger-Plugin
Um diesen Prozess nachzuahmen, habe ich Test1 und Test2 erstellt. Der Build-Inhalt in jedem Projekt besteht aus Windows-Batch-Commonds. Sie können die Befehle nach Belieben eingeben.
1. Die relevante Konfiguration von Test1 ist wie folgt
Das erste, was wir wissen müssen, ist, dass wir weitergeben wollenPaketnamenDieser Parameter
(1) setzt diesen Parameter zuerst in Test1.
(2) Wählen Sie Trigger parametrized Build für andere Projekte
Zu erstellende Projekte Wählen Sie das Projekt aus, das Sie auslösen möchten. Hier schreiben wirTest2. Trigger, wenn Build nach Bedarf ausgewählt ist.
Sie können die Parameter, die Sie übergeben möchten, in den vordefinierten Parametern definieren, die wie folgt geschrieben sind, oder Sie können die Umgebungsvariablen des aktuellen Jobs an ein anderes Projekt übergeben.
Also ist Test1 gesetzt
2. Die relevante Konfiguration von Test2 ist wie folgt
Wählen Sie für die Konfiguration in Test2 den parametrisierten Erstellungsprozess aus. Der Parametername sollte mit dem gerade geschriebenen
übereinstimmen ! [Fügen Sie hier die Bildbeschreibung ein] Stellen Sie sicher
, dass die Parameter in Windows Batch Commonds 3 korrekt übergeben werden. Schauen wir uns abschließend die Konsolenausgabe der beiden Jobs an. Die
erste ist die Konsolenausgabe von Test1. Sie können sehen, dass Test 2 aufgerufen wird
Dann schauen wir uns die Konsolenausgabe von Test2 an und
sehen, dass der von uns übergebene Parameter packageName, ausgelöst durch Nummer 4 von Test1, ebenfalls übergeben wurde.
Gegenseitiger Aufruf und Parameterübertragung zwischen Pipeline-Jobs
Lassen Sie uns vorstellen, wie zwei JOBs im Pipeline-Code verbunden werden. Wir wissen, dass wir im freien Jobeinstellungs-Header in Jenkins der grafischen Oberfläche die Ausführung von Job B nach Ausführung von Job A auslösen können. Wie realisiert die Pipeline diesen Prozess?
Umweltvorbereitung
Derzeit heißt mein JobA ProjectA-Pipeline-Demo und JobB heißt ProjectA1-Pipeline-Demo
1. Die relevante Konfiguration der ProjectA-Pipeline-Demo lautet wie folgt:
Dies ist ein einfacher Pipeline-Job, den ich lokal geschrieben habe. Mit der Build-Funktion können Parameter zwischen Pipeline-Jobs aufgerufen und übertragen werden.
// An highlighted block
import hudson.model.*;
pipeline{
agent any
stages{
stage("Hello Pipeline") {
steps {
script {
println "Hello Pipeline!"
println env.JOB_NAME
println env.BUILD_NUMBER
}
}
}
stage("Init paramters in json") {
steps {
script {
println "read josn input file"
def packagename = "xxx"
println packagename
callTestingJob(packagename)
}
}
}
}
}
def callTestingJob(packagename){
println packagename
build job:"1", propagate: false, wait: true,parameters: [
string(name:'packagename', value: packagename)
]
}
3. Gegenseitige Anrufe zwischen verschiedenen Arten von Jobs
Pipeline Job ruft Project Job auf und übergibt Parameter
Oben haben wir gelernt, wie Parameter zwischen denselben Typen aufgerufen und übergeben werden. Anschließend werden verschiedene Arten von Jobs in Reihe geschaltet. Hier nennen wir den Pipeline-Job ProjectB-Pipeline-Demo und den Projektjob-Namen 1.
1. Die relevante Konfiguration der ProjectB-Pipeline-Demo ist wie folgt
Dies ist ein einfacher Pipeline-Code, den ich lokal geschrieben habe
// An highlighted block
import hudson.model.*;
pipeline{
agent any
stages{
stage("Hello Pipeline") {
steps {
script {
println "Hello Pipeline!"
println env.JOB_NAME
println env.BUILD_NUMBER
}
}
}
stage("Init paramters in json") {
steps {
script {
println "read josn input file"
def packagename = "xxx"
println packagename
callTestingJob(packagename)
}
}
}
}
}
def callTestingJob(packagename){
println packagename
build job:"1", propagate: false, wait: true,parameters: [
string(name:'packagename', value: packagename)
]
}
Definieren Sie eine callTestingJob-Funktion, um den Code zum Aufrufen von Job B hinzuzufügen. TransferPaketnamenDieser Parameter.
2. Die relevante Konfiguration von Projekt 1 lautet wie folgt:
Fügen Sie einen Parameter hinzu, dessen Name mit dem der ProjectB-Pipeline-Demo
identisch ist, und testen Sie ihn mit Windows-Batch-Befehlen, um festzustellen, ob packeageName gedruckt werden kann.
3. Sehen Sie sich die Konsolenausgabe an
Die erste ist die Konsolenausgabe der ProjectB-Pipeline-Demo. Sie können sehen, dass 1 aufgerufen wird
Dann schauen wir uns die Konsolenausgabe von 1 an und
sehen, dass, ausgelöst durch Nummer 34 der ProjectB-Pipeline-Demo, auch der von uns übergebene Parameter packageName übergeben wurde.
Verweise
【1】 https://blog.csdn.net/winter199/article/details/90604933
【2】 https://blog.csdn.net/u011541946/article/details/89344002