在詹金斯使用键值对

问题描述 投票:2回答:3

这是我的要求,在詹金斯参数:

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'.

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

jenkins jenkins-plugins key-value-observing keyvaluepair
3个回答
2
投票

这可以通过主动选择插件来实现,查找供大家参考链接和图像下方

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

enter image description here

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

使用shell脚本可以做到这一点

添加构建步骤为shell脚本,并添加下面的脚本,将返回你的价值观。比方说下拉paramater名称为“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


0
投票

你可以做一个Groovy脚本映射。如果你有一个名为InputParam参数,可以将其映射到一个名为OutParam在系统Groovy脚本像这样的新参数:

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外壳环境变量,例如。 ECHO %OUTPARAM%


0
投票

我设法用一个下拉列表中选择参数与Active Choices Plugin合作,拿到钥匙/值,它并不像这里的其他答案复杂,它实际上埋在自己的插件页面上的评论。

为了在詹金斯得到一个键/值对选择下拉列表参数(即表现出人类可读的值,而是通过不同的密钥生成。您只需编写Groovy脚本时使用的地图,而不是一个列表。地图键是什么参数将被设置为,如果用户选择此选项,地图值是什么将实际显示在下拉列表中的用户。

例如,该脚本:return ['Key1':'Display 1', 'Key2':'Display 2', 'Key3':'Display 3']将显示包含一个下拉:Display1,显示2和Display3给用户。然而,构建参数实际上将被设置为密钥1,密钥2或键3取决于所选内容。

对于这个具体的问题,这里的步骤。

  1. 确保您有插件安装主动选择。
  2. 打开你的詹金斯作业的配置,选择这个项目是参数。
  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

© www.soinside.com 2019 - 2024. All rights reserved.