Jenkins Groovy URL获取参数 [英] Jenkins Groovy URL get parameter

查看:775
本文介绍了Jenkins Groovy URL获取参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 输入消息:'合并',参数在我的Jenkins多输入管道项目中,我有一个像这样的输入步骤: :[[$ class:'BooleanParameterDefinition',defaultValue:true,description:'',name:Merge $ {branchConfig.merge} to $ {env.BRANCH_NAME}?]] 


我通过调用这个网址开始这项工作:

http:// user:api-token@awesome.jenkins.de/job/ myTest / job / dev / build



现在我想添加一个GET参数,如下所示:



http:// user: api-token@awesome.jenkins.de/job/myTest/job/dev/build?skipInput=true

我现在的问题是,我怎么能在groovy中获取这个参数?



更新:在第一条评论之后,我做了以下操作:

  //添加参数以跳过MergeInput。 
属性([[$ class:'ParametersDefinitionProperty',parameterDefinitions:[[$ class:'BooleanParameterDefinition',name:'skipMergeInput',defaultValue:false]]]])



然后调整输入:

 输入消息:'Merge',参数:[[$ class:'BooleanParameterDefinition',defaultValue:params.skipMergeInput,description:'',name:Merge $ {branchConfig.merge} to $ {env.BRANCH_NAME}?]]] 

当我开始工作时,它会显示一个弹出窗口,询问应该显示的值组。但不管我决定如何,输入总是错误的。我试图弄清楚什么是错误的,然后将更新我的帖子。



更新2:
所以我一直在调试。我在groovy脚本中添加了以下内容:

  //添加参数以跳过MergeInput。 
def doMerge = properties([[$ class:'ParametersDefinitionProperty',parameterDefinitions:[[$ class:'BooleanParameterDefinition',name:'doMerge',defaultValue:true]]]])
println doMerge;

输出将返回NULL,当我做类似于

  println params.doMerge 

它告诉我params没有定义。任何想法发生了什么问题?



更新3:


$ b 致电网址:/ job / dg_test / job / master / buildWithParameters?test = true



Groovy Script:

 属性([[$ class:'ParametersDefinitionProperty',parameterDefinitions:[[$ class:'BooleanParameterDefinition',name:'test',defaultValue:false]]]])
println params.test

结果:

  property:params for class:groovy.lang.Binding 


解决方案

我终于解决了,这篇文章真的帮了我: https://stackoverflow.com/a/41276956/1565249 p>

这是我的实现:

  //添加花哨的构建参数。 
properties([
parameters([
booleanParam(
defaultValue:false,
description:'Some description',
name:'developmentMerge'


$)

if(developmentMerge ==true|| developmentMerge == true){
// Your code here
}
else {
//你的代码在这里
}

当我现在从GUI手动开始我的工作时,它会问我应该为developmentMerge设置哪个值。



我也可以开始工作调用以下URL:
/ job / dg_test / job / master / buildWithParameters?developmentMerge = true

其中dg_test是我的Jenkins项目的名称和主人是我想要开始的工作。



if语句必须像这样完成:

  if(developmentMerge ==true|| developmentMerge == true)

因为当你从GUI开始工作时,它会发送一个布尔值t rue,但是当你通过URL调用开始工作时,你会收到一个字符串。


In my Jenkins multi pipeline project i am having a input step like this:

input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: true, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]]

I am starting this job by calling this url:

http://user:api-token@awesome.jenkins.de/job/myTest/job/dev/build

Now I want to add a GET parameter like this:

http://user:api-token@awesome.jenkins.de/job/myTest/job/dev/build?skipInput=true

My question now is, how can I get this parameter in groovy?

UPDATE: Following the first comment, I did the following:

// Add parameter to skip MergeInput.
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'skipMergeInput', defaultValue: false]]]])

And adjusted the input like that:

input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: params.skipMergeInput, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]]

When I am now starting my job, it shows me a popup that ask for the value that should be set. But no matter what i decide, the input is always false. I am trying to figure out what is going wrong and will update my post then.

UPDATE 2: So I kept on debugging. I added the following to my groovy script:

// Add parameter to skip MergeInput.
def doMerge = properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'doMerge', defaultValue: true]]]])
println doMerge;

The output returns me NULL, and when I am doing something like

println params.doMerge

It tells me that params is not defined. Any idea what is going wrong?

UPDATE 3:

Call URL: /job/dg_test/job/master/buildWithParameters?test=true

Groovy Script:

properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'test', defaultValue: false]]]])
println params.test

Result:

No such property: params for class: groovy.lang.Binding

解决方案

I finally solved it, this post really helped me: https://stackoverflow.com/a/41276956/1565249

And this is my implementation:

// Add fancy build parameter.
properties([
  parameters([
    booleanParam(
      defaultValue: false,
      description: 'Some description',
      name: 'developmentMerge'
    ),
  ])
])

if (developmentMerge == "true" || developmentMerge == true) {
  // Your code here
}
else {
  // Your code here
}

When I now start my job manually from the GUI, it asks me which value should be set for "developmentMerge".

And I also can start my job by calling this URL: "/job/dg_test/job/master/buildWithParameters?developmentMerge=true"

Where "dg_test" is the name of my Jenkins project and "master" is the job i wanted to start.

The if statement must be done like this:

if (developmentMerge == "true" || developmentMerge == true)

because when you start the job from GUI, it will send a boolean "true", but when you start the job by the URL call, you receive a string.

这篇关于Jenkins Groovy URL获取参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆