Wie kann ich in Jenkins mehrere Jobs gleichzeitig neu erstellen?

9

Ich verwende das Jenkins Rebuild Plugin , um parametrisierte Builds mit einer einzigen Rebuild- Schaltfläche auszuführen . Wenn ich jedoch Dutzende parametrisierter Jobs (entweder ausgewählt oder aus demselben Ordner) erneut ausführen muss, ist dies immer noch nicht effizient.

Gibt es eine einfachere Möglichkeit (eventuell mit einem anderen Plugin), mehrere Jobs gleichzeitig mit den zuletzt verwendeten Parametern erneut auszuführen?

Kenorb
quelle
2
Mir ist kein Plugin bekannt, das mehrere Neuerstellungen durchführt. Aber ich kann vorschlagen, vielleicht einen anderen Ansatz zu wählen und eine auf Wiederholungen basierende Lösung zu verwenden, bei der sich jeder fehlerhafte Build selbst wiederholt (je nach Konfiguration). Dies würde die Notwendigkeit einer Mehrfachwiederherstellung (zumindest in einigen Fällen) überflüssig machen.
Assaf Lavie

Antworten:

8

Sie können eine Pipeline verwenden , um die Jobs miteinander zu verknüpfen und sie entweder parallel oder nacheinander in Schritten auszuführen.
Sie können die relevanten Parameter an jeden Job übergeben, wie Sie ihn aus dem Pipeline-Skript aufrufen.
Dann müssen Sie nur noch einen einzelnen Pipeline-Job neu erstellen. Sie können die Jobs auch über eine Variable mit einem allgemeinen Buildnamen verknüpfen.

build job: 'buildjob1', parameters: [
  [$class: 'StringParameterValue', name: 'BUILD_NAME', value: ${env.JOB_BASE_NAME}-${env.BUILD_NUMBER}"], 
  [$class: 'StringParameterValue', name: 'FIXEDPARAM', value: 'some-string'],
  [$class: 'StringParameterValue', name: 'PARAM1', value: "${PARAM1}"]
]
Jiri Klouda
quelle
1

Sie können auch eine Liste von Parameterobjekten erstellen und diese dann an den Erstellungsschritt übergeben:

def paramsMap = [:]
paramsMap['param1'] = 'value1'
paramsMap['param2'] = 'value2'
def paramsObjects = []
paramsMap.each {
  key, value ->
    paramsObjects.push([$class: 'StringParameterValue', name: key, value: value])
}
build job: jobName, parameters: paramsObjects

paramsObjects würde folgendermaßen aussehen:

[
    [$class:StringParameterValue, name:param1, value:value1],
    [$class:StringParameterValue, name:param2, value:value2]
]
modle13
quelle