actice choice 这个插件的作用是可以在参数化构建时,创建一个可选的参数

例如,用jenkins创建一个发布project时,我们发布过程中需要选择环境、服务名称等,我们希望在参数化构建时,可以提供一个下拉框给用户进行选择,这时候可以使用这个插件来创建这样的可选参数

下面是效果图

image.png

如何使用actice choice 插件

1、安装active choices插件

image.png

2、创建一个project,勾选参数化构建

image.png

勾选Groovy script

将选项写成上图这个样子即可。这里选项是固定的,我们可以这样写死,如果选项是动态的呢?比如产品这个选项,现在有十个产品,后面可能会增加到30个。我们写死的化很需要一直维护。这种情况怎么办?能否动态的获取所有产品名称呢?答案是肯定的

比如:我们公司产品我是通过python脚本调用cmdb的api接口获取到的,然后将获取的所有产品写入到文件中。一行一个产品,如下图这样子

image.png

Groovy script从文件中获取变量值

image.png

参数类型

参数类型可以设置为单选和多选,还有radio buttons这种单选框,check box是复选框,可以根据自己的需求来使用

image.png

扩展

An Active Choices Reactive Parameter

active choice插件还有一个好用的功能,就是当有多个参数时,第二个参数的值,会根据第一个参数选择的值进行变换。举一个很常见的场景:

在发布时,当选择生产环境时,第二个参数的选项里面应该出现生产环境的服务器,当选择测试环境时,第二个选项里面应该出现测试环境的服务器。

我这里有一个需求,当选择一个模块时,会根据模块名称,查通过CMDB接口查询哪些产品有该模块。

先看下效果图,由于我本机测试环境没有办法连CMDB,所以只测试当选择一个module时,我的aaa参数这里,也出现该module。效果图如下:

image.png

aaa参数配置

image.png

image.png

module=moduledef list = "/opt/aaa.py $module".execute().text.readLines()list.each{language->  println language}

/opt/aaa.py脚本内容

[root@localhost opt]# cat aaa.py #!/usr/bin/pythonimport sysprint  sys.argv[1]

该脚本很简单,就是传递一个参数,然后print这个参数。在aaa这个变量里面,这个参数是关联的module,所以打印的就是用户选择的module的名称。

参考链接:

官方文档:

要查询某个插件的用法,可以在这里根据插件名称搜索