在Jenkins中使用键值对

时间:2016-04-18 02:23:05

标签: jenkins jenkins-plugins key-value-observing keyvaluepair

这是我要求在Jenkins中使用参数:

1. User selects 3 Values from Dropdown: DEV, QA, PROD
2. Upon selection I need to return single value as parameter as like this:
 If DEV selected, return "Development http://dev.com 1"
 If QA selected, return "QA http://qa.com 2"
 If PROD selected, return "Production http://prod.com 3"
3. Once the value is returned in a variable, I will use that variable value in next step of 'Windows batch command'.

在何处以及如何定义键/值。我尝试使用扩展选择参数插件,但不知道如何做到这一点。

3 个答案:

答案 0 :(得分:2)

这可以使用Active choice插件,在链接下方查找和图像供您参考

来实现

插件参考:https://wiki.jenkins-ci.org/display/JENKINS/Active+Choices+Plugin

enter image description here

没有任何插件的另一种方法

使用shell脚本可以实现

将构建步骤添加为shell脚本,并添加以下将返回值的脚本。让我们说下拉参数名称是" env"

if [ $env == "DEV" ]
then
   url = "Development http://dev.com 1"
elif [ $env == "QA" ]
then
   url = "QA http://qa.com 2"
elif [ $env == "PROD" ]
then
   url = "Production http://prod.com 3"
fi

$ url变量将具有可在下一个构建步骤中使用的预期值

Shell脚本参考:http://www.tutorialspoint.com/unix/if-elif-statement.htm

答案 1 :(得分:0)

您可以在groovy脚本中进行映射。如果你有一个名为InputParam的参数,你可以将它映射到System Groovy Script中一个名为OutParam的新参数,如下所示:

import hudson.model.*
def parameterMap=[:]
parameterMap.put('DEV','Development http://dev.com 1')
parameterMap.put('QA','QA http://qa.com 2')
parameterMap.put('PROD','Production http://prod.com 3')

def buildMap = build.getBuildVariables() 
def inputValue=buildMap['InputParam']
buildMap['OutParam']=parameterMap[inputValue]

setBuildParameters(buildMap)

def setBuildParameters(map) {
    def npl = new ArrayList<StringParameterValue>()
    for (e in map) {
        npl.add(new StringParameterValue(e.key.toString(), e.value.toString()))
    }
    def newPa = null
    def oldPa = build.getAction(ParametersAction.class)
    if (oldPa != null) {
        build.actions.remove(oldPa)
        newPa = oldPa.createUpdated(npl)
    } else {
        newPa = new ParametersAction(npl)
    }
    build.actions.add(newPa)
}

选择执行系统Groovy脚本作为第一个构建操作。然后,您可以在Windows shell中将输出参数作为环境变量访问,例如。 ECHO %OUTPARAM%

答案 2 :(得分:0)

我设法通过与Active Choices Plugin一起使用的下拉选择参数来获取键/值,它不像这里的其他答案那么复杂,它实际上埋在插件页面本身的注释中。 / p>

要获取键/值对,请在Jenkins中选择下拉列表参数(即,显示人类可读的值,但将不同的键传递给内部版本。编写Groovy脚本时,您只需要使用映射而不是列表。映射键是用户选择此选项时将设置为该参数的键。映射值是实际在下拉列表中向用户显示的值。

例如,脚本return ['Key1':'Display 1', 'Key2':'Display 2', 'Key3':'Display 3']将向用户显示一个下拉列表,其中包含:Display1,Display2和Display3。但是,根据选择的内容,构建参数实际上将设置为Key1,Key2或Key3。

对于此特定问题,请按以下步骤操作。

  1. 确保您已安装Active Choices插件。
  2. 打开您的Jenkins作业的配置,选择该项目已参数化
  3. 点击添加参数,然后选择活动选择参数
  4. 命名您的参数,然后单击 Groovy脚本复选框。
  5. Groovy脚本中输入内容:return ['Development http://dev.com 1':'DEV', 'QA http://qa.com 2':'QA', 'Production http://prod.com 3':'PROD']在此示例中,用户将看到一个包含3个选项的下拉菜单:DEV,QA和PROD。传递给该参数的值将是Development http://dev.com 1等。现在具有空格和URL的参数可能会导致问题,具体取决于您稍后在构建中使用它的方式,但是实际上我想说明的是概念。

Active Choices Parameter configuration