Comment reconstruire plusieurs emplois en même temps dans Jenkins?

9

J'utilise Jenkins Rebuild Plugin pour exécuter un build paramétré avec un seul bouton Rebuild . Cependant, lorsque je dois réexécuter des dizaines de tâches paramétrées (sélectionnées ou dans le même dossier), ce n'est toujours pas efficace.

Existe-t-il un moyen plus simple (éventuellement d'utiliser un plugin différent) pour réexécuter plusieurs travaux en même temps en utilisant les derniers paramètres utilisés?

Kenorb
la source
2
Je ne connais pas de plugin qui effectue plusieurs reconstructions. Mais je peux suggérer de peut-être adopter une approche différente et utiliser une solution basée sur les nouvelles tentatives, où toute construction défaillante se réessayera (selon certaines configurations). Cela rendrait en quelque sorte la nécessité de plusieurs reconstructions redondantes (au moins dans certains cas).
Assaf Lavie

Réponses:

8

Vous pouvez utiliser un pipeline pour lier les travaux ensemble, en les exécutant en parallèle ou séquentiellement par étapes.
Vous pouvez transmettre les paramètres pertinents à chaque travail lorsque vous l'appelez à partir du script de pipeline.
Il vous suffit ensuite de reconstruire un seul travail de pipeline. Vous pouvez également lier les travaux avec un nom de build commun via une variable.

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
la source
1

Vous pouvez également créer une liste d'objets de paramètres, puis la transmettre à l'étape de génération:

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 ressemblerait à ceci:

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