在做jenkins项目时,有些参数不是固定写死的,而是动态变化的,这时我们可以用 Active Choices 插件来远程调用参数。
实现结果如下:
操作步骤:
注意筛选关键字参数必须位于筛选列表的前面,如该文章示例keyword必须在affectedPlatformIds前面
Groovy Script代码如下:
import groovy.json.JsonSlurper def respText = "curl http://192.168.1.29:81/upgrade_platform/allList?keyword=${keyword}".execute().text def slurper = new groovy.json.JsonSlurper() def pfm = slurper.parseText(respText) //parseText将json字符串转换为Map对象;JsonOutput类用于将Groovy对象转换为JSON字符串 html_to_be_rendered = "<div style=\"max-height:300px;overflow-y: scroll;width: 350px;\"><table><tr>" pfm.each {html_to_be_rendered = """ ${html_to_be_rendered}<tr><td><input name=\"value\" alt=\"${it.id}\" json=\"${it.id}\" type=\"checkbox\" class=\" \"><label title=\"${it.platform_name}\" class=\" \">${it.platform_name}</label></td></tr> """ }html_to_be_rendered = "${html_to_be_rendered}</tr></table></div>"return html_to_be_rendered
管理员用户登录后,允许上面的groovy脚本执行:
其他代码groovy代码备份:
Active Choices Reactive Parameter
import groovy.json.JsonSlurper def respText = "curl http://192.168.1.29:81/upgrade_platform/getAllPlatformName?keyword=${keyword}".execute().text def slurper = new groovy.json.JsonSlurper() def pfm = slurper.parseText(respText) //parseText将json字符串转换为Map对象;JsonOutput类用于将Groovy对象转换为JSON字符串 return pfm
效果:
代码:
Active Choices Parameter
Active Choices Reactive Reference Parameter
return ["web", "backend", "database"]
service_tier_map = ["web": [["service_name": "user_frontend", "release_tag": "1.0.0" ],["service_name": "admin_frontend", "release_tag": "1.0.2" ],],"backend": [["service_name": "admin_service", "release_tag": "2.1.0" ],["service_name": "finance_service", "release_tag": "2.2.0" ],["service_name": "payment_service", "release_tag": "3.2.0" ],],"database": [["service_name": "dynamo_db", "release_tag": "5.4.1"],["service_name": "mysql", "release_tag": "3.2.1"],["service_name": "postgresql", "release_tag": "1.2.3"],], ]html_to_be_rendered = "<table><tr>" service_list = service_tier_map[tier] service_list.each { service ->html_to_be_rendered = """ ${html_to_be_rendered}<tr><td><input name=\"value\" alt=\"${service.service_name}\" json=\"${service.service_name}\" type=\"checkbox\" class=\" \"><label title=\"${service.service_name}\" class=\" \">${service.service_name}</label></td><td><input type=\"text\" class=\" \" name=\"value\" value=\"${service.release_tag}\"> </br></td></tr> """ }html_to_be_rendered = "${html_to_be_rendered}</tr></table>"return html_to_be_rendered