2015-07-13 20 views
5

Chciałbym zapisać parametry przekazane do zadania JobDSL. Wiem, że mogę odnosić się do poszczególnych parametrów, ale chciałbym, aby kod był generyczny. Jak uzyskać dostęp do listy parametrów przekazanych do pracy?Jak uzyskać dostęp do listy parametrów pracy Jenkinsa z poziomu skryptu JobDSL?

Obecny kod wygląda mniej więcej tak:

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

Chciałbym, aby móc dostać to wyglądać mniej więcej tak:

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

params jest coś, co jest dostępne w produkcji Przepływ Plugin ale nie JobDL Plugin.

+0

Jakiś fragment kodu jako punkt wyjścia? – StephenKing

+0

Dodałem przykładowy kod. –

Odpowiedz

9

DSL nie oferuje dostępu do parametrów kompilacji. Ale skrypt ma dostęp do modelu obiektowego Jenkins, dzięki czemu można korzystać z API Jenkins aby pobrać aktualną wersję i jego parametry:

import hudson.model.* 

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

To jak to zrobić do debugowania (przeczytałem to gdzieś, ja” m nie jest ekspertem Groovy lub Job DSL ...):

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

Pokazuje wszystkie istniejące zmienne środowiskowe, w tym parametry zadania.

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

to działa jak marzenie! ładne i proste, dokładnie to, czego potrzebowałem! –

+0

@eerriicc Podziękuj człowiekowi <3 – BVengerov