如何传递自定义HTML+;Jenkins输入步骤页面的js代码?
我正试图从管道库中实现Jenkins“Input step”中的灵活UI,目前我正在使用Extended choice parameters plugin(),它构建在Json编辑器库()之上,用于提供各种HTML输入元素(从Json模式创建)并生成Json输出 除了“扩展选择参数”提供的输入表单外,“输入步骤”是否可以接受一些html模板代码来填充在构建期间收集的数据,并使用一些自定义html元素和js绑定将其打印在“输入步骤”页面上 现在,我通过groovy共享库脚本生成动态下拉列表,但无法将其打印在“Input step page”非输入元素上如何传递自定义HTML+;Jenkins输入步骤页面的js代码?,jenkins,input,groovy,jenkins-pipeline,Jenkins,Input,Groovy,Jenkins Pipeline,我正试图从管道库中实现Jenkins“Input step”中的灵活UI,目前我正在使用Extended choice parameters plugin(),它构建在Json编辑器库()之上,用于提供各种HTML输入元素(从Json模式创建)并生成Json输出 除了“扩展选择参数”提供的输入表单外,“输入步骤”是否可以接受一些html模板代码来填充在构建期间收集的数据,并使用一些自定义html元素和js绑定将其打印在“输入步骤”页面上 现在,我通过groovy共享库脚本生成动态下拉列表,但无法
一切都很简单,ExtendedChoiceParameterDefinition有参数“String javascript”,可以接受任何js字符串,它不仅可以为JSON编辑器返回JSON字符串,还可以修改输入页面本身 示例管道:
stage('UserInput'){
steps {
script {
//...groovy script is omitted, it need only return json in valid form
def jsString = '''
var bodyElement = document.createElement('div');
bodyElement.innerHTML = '<h1 id="title">Some Title</h1><span style="display:inline-block; width=100px;">Some arbitrary text</span>';
document.getElementsByTagName('body')[0].appendChild(bodyElement);'''
def jsonParams = new ExtendedChoiceParameterDefinition(
'Cookbooks', //String name,
'PT_JSON', //String type,
null, //String value,
null, //String projectName,
null, //String propertyFile,
jsonGroovyScript, //String groovyScript (that returns JSON for generating Json-Input forms),
null, //String groovyScriptFile,
"jsonText=$jsonText", //String bindings,
'', //String groovyClasspath,
null, //String propertyKey,
null, //String defaultValue,
null, //String defaultPropertyFile,
null, //String defaultGroovyScript,
null, //String defaultGroovyScriptFile,
null, //String defaultBindings,
null, //String defaultGroovyClasspath,
null, //String defaultPropertyKey,
null, //String descriptionPropertyValue,
null, //String descriptionPropertyFile,
null, //String descriptionGroovyScript,
null, //String descriptionGroovyScriptFile,
null, //String descriptionBindings,
null, //String descriptionGroovyClasspath,
null, //String descriptionPropertyKey,
null, //String javascriptFile,
jsString, //String javascript (js code that modify input page itself),
false, //boolean saveJSONParameterToFile,
false, //boolean quoteValue,
10, //int visibleItemCount,
'', //String description,
',' //String multiSelectDelimiter
))
parameterList << jsonParams
def form = input(
id: 'form', message: 'input parameters', parameters: parameterList
) // generating input page step and store it in "form" var
env.FORM = form
}
}
}
stage('UserInput'){
台阶{
剧本{
//…省略groovy脚本,它只需要以有效形式返回json
def jsString=''
var bodyElement=document.createElement('div');
bodyElement.innerHTML='Some TitleSome任意文本';
document.getElementsByTagName('body')[0]。appendChild(bodyElement);“”
def jsonParams=新的ExtendedChoiceParameterDefinition(
“Cookbooks”,//字符串名称,
'PT_JSON',//字符串类型,
null,//字符串值,
null,//字符串projectName,
null,//字符串propertyFile,
jsonGroovyScript,//字符串groovyScript(返回JSON以生成JSON输入表单),
null,//字符串GroovyScript文件,
“jsonText=$jsonText”,//字符串绑定,
'',//字符串groovyClasspath,
null,//字符串propertyKey,
null,//字符串defaultValue,
null,//字符串defaultPropertyFile,
null,//字符串defaultGroovyScript,
null,//字符串defaultGroovyScript文件,
null,//字符串defaultBindings,
null,//字符串defaultGroovyClasspath,
null,//字符串defaultPropertyKey,
null,//字符串descriptionPropertyValue,
null,//字符串descriptionPropertyFile,
null,//字符串descriptionRoovyScript,
null,//字符串descriptionRoovyScript文件,
null,//字符串描述绑定,
null,//字符串descriptionRoovyclasspath,
null,//字符串descriptionPropertyKey,
null,//字符串javascriptFile,
jsString,//字符串javascript(修改输入页面本身的js代码),
false,//布尔saveJSONParameterToFile,
false,//布尔quoteValue,
10,//int visibleItemCount,
'',//字符串描述,
“,”//字符串多选定界符
))
parameterList Hi@commander asdasd,您能演示如何创建指向网页的链接吗?如果需要,如何使用jsonGroovyScript
和jsonText
?如果我没弄错的话,简单如下:def link=”https://google.com"
-将数据传递给var,并通过变量扩展将其插入插件将要执行的js字符串bodyElement.innerHTML='${link}';