2015-07-13 5 views
5

Ich möchte die übergebenen Parameter in einem JobDSL-Job speichern. Ich weiß, dass ich auf einzelne Parameter verweisen kann, aber ich möchte den Code generisch machen. Wie würde ich auf die Liste der Parameter zugreifen, die an den Job übergeben werden?Wie kann ich auf Jenkins-Job-Parameter in einem JobDSL-Skript zugreifen?

Der aktuelle Code sieht ungefähr so ​​aus:

final jobParameters = new File('parameters') 
jobParameters.write(""" 
    |AOEU=${AOEU} 
    |SNTH=${SNTH} 
"""[1..-1].stripMargin().trim()) 

Ich mag wäre in der Lage sein, um es so etwas wie zu sehen zu bekommen:

final jobParameters = new File('parameters') 
jobParameters.write(params.iterator().join('\n')) 

params etwas ist, das im Build Flow-Plugin vorhanden ist, aber nicht das JobDSL Plugin.

+0

Irgendwelche Code-Schnipsel als Startpunkt? – StephenKing

+0

Ich habe Beispielcode hinzugefügt. –

Antwort

9

Die DSL bietet keinen Zugriff auf die Build-Parameter. Aber das Skript hat Zugriff auf das Objektmodell Jenkins, so dass Sie die Jenkins-API verwenden, können die aktuellen Build und seine Parameter abzurufen:

import hudson.model.* 

Build build = Executor.currentExecutor().currentExecutable 
ParametersAction parametersAction = build.getAction(ParametersAction) 
parametersAction.parameters.each { ParameterValue v -> 
    println v 
} 
7

Dies ist, wie ich es tun für das Debuggen (Ich habe irgendwo gelesen, ich‘ m auf keinen Fall ein Groovy oder Job DSL-Experte ...):

binding.variables.each { 
    println "${it.key} = ${it.value}" 
} 

Dies zeigt alle vorhandenen Umgebungsvariablen, einschließlich der Job-Parameter.

JOB_NAME = job-generator 
... 
NEXT_PROJECTS = baz,bat 
... 
PROJECT_TYPE = Software 
... 
PROJECTS = foo,bar 
... 
SHELL = /bin/bash 
+1

das funktioniert wie ein Traum! schön und einfach, genau was ich brauchte! –

+0

@eerriicc Danke mann <3 – BVengerov