Comment récupérer les paramètres de construction Jenkins en utilisant L'API Groovy?

J'ai un travail paramétré qui utilise le plugin Perforce et souhaite récupérer les paramètres/propriétés de construction ainsi que le p4.Modifiez la propriété définie par le plugin Perforce.

Comment récupérer ces propriétés avec L'API Jenkins Groovy?

26
demandé sur Noel Yap 2012-06-04 17:53:01

7 réponses

En ce qui concerne les paramètres:

Voir cette réponse d'abord. Pour obtenir une liste de toutes les constructions pour un projet (obtenue selon cette réponse):

project.builds

Lorsque vous trouvez votre build, vous devez obtenir toutes les actions de type ParametersAction avec build.getActions(hudson.model.ParametersAction). Vous interrogez ensuite l'objet retourné pour vos paramètres spécifiques.

Concernant p4.changement: je soupçonne qu'il est également stocké en tant qu'action. Dans Jenkins Groovy console obtenir toutes les actions pour une construction qui contient p4.changez et examinez-les-Cela vous donnera une idée de ce qu'il faut rechercher dans votre code.

13
répondu malenkiy_scot 2017-05-23 11:46:30

Pour résoudre un seul paramètre (je suppose ce qui est le plus souvent nécessaire), c'est le plus simple que j'ai trouvé:

Construire.buildVariableResolver.résoudre("myparameter")

Dans votre étape de construction de script système Groovy.

23
répondu inger 2014-05-14 21:29:01

Veuillez noter que la page officielle du Wiki Jenkins couvre cela dans plus de détails: https://wiki.jenkins-ci.org/display/JENKINS/Parameterized + système + Groovy + script La partie saillante est reproduite ci-dessous:

// get parameters
def parameters = build?.actions.find{ it instanceof ParametersAction }?.parameters
parameters.each {
   println "parameter ${it.name}:"
   println it.dump()
}

// ... or if you want the parameter by name ...
def hardcoded_param = "FOOBAR"
def resolver = build.buildVariableResolver
def hardcoded_param_value = resolver.resolve(hardcoded_param)
23
répondu Patrice M. 2015-11-12 16:29:54

Je viens de faire fonctionner cela, donc spécifiquement, en utilisant le plugin Groovy Postbuild, vous pouvez faire ce qui suit:

def paramText
def actionList = manager.build.getActions(hudson.model.ParametersAction)
if (actionList.size() != 0)
{
  def pA = actionList.get(0)
  paramText = pA.createVariableResolver(manager.build).resolve("MY_PARAM_NAME")
}
10
répondu Dan 2012-11-28 11:32:55

Dans les cas où un nom de paramètre ne peut pas être codé en dur, j'ai trouvé que ce serait le moyen le plus simple et le meilleur d'accéder aux paramètres:

def myParam = env.getProperty(dynamicParamName)

Dans les cas où un nom de paramètre est connu et peut être codé en dur, les 3 lignes suivantes sont équivalentes:

def myParam = env.getProperty("myParamName")
def myParam = env.myParamName
def myParam = myParamName
2
répondu ATrubka 2018-06-06 18:32:13

Récupère tous les paramètres:

System.getenv().each{
  println it
}

Ou plus sophistiqué:

def myvariables = getBinding().getVariables()
for (v in myvariables) {
   echo "${v} " + myvariables.get(v)
}

Vous devrez désactiver "utiliser Groovy Sandbox" pour les deux.

1
répondu Atais 2017-10-09 09:34:52

Pour obtenir les paramètres de construction paramétrés de la construction actuelle de votre GroovyScript (en utilisant le Pipeline), tout ce que vous devez faire est: Disons que vous aviez une variable appelée VARNAME.

def myVariable = env.VARNAME

1
répondu XP84 2018-02-05 23:43:13