Как передать пользовательский код HTML + js на страницу шагов Jenkins Input? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь добиться гибкого пользовательского интерфейса в Jenkins "Шаг ввода" из конвейерной библиотеки, в настоящее время я использую плагин параметров расширенного выбора (https://wiki.jenkins.io/display/JENKINS/Extended+Choice+Parameter+plugin),, который построен поверх библиотеки Json Editor (https://github.com/json-editor/json-editor) и используется для предоставления различных элементов ввода HTML (созданных из схемы JSON) и генерации вывода JSON.

Может ли «Шаг ввода» принять некоторый код шаблона HTML, чтобы заполнить его данными, собранными во время сборки, и распечатать его на странице «Шаг ввода» с некоторыми пользовательскими элементами HTML и привязкой js, помимо форм ввода, предоставленных параметрами расширенного выбора «

Теперь я создаю динамический раскрывающийся список с помощью скрипта Groovy для общей библиотеки, но не могу заставить его печатать на невходящих элементах «Страница шага ввода».

Пример того, что мне нужно на шаге ввода

1 Ответ

0 голосов
/ 20 ноября 2018

Все было довольно просто, 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
                }
              }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...