У меня есть многострочный строковый параметр Jenkins.
Дженкинс не предоставляет функцию обрезки для многострочной строки, как для параметра однострочной строки.
Таким образом, пользователь может вводить детали, имеющие начальные, конечные пробелы или просто пустые строки в многострочном параметре, как показано ниже.
/tmp/file1.txt
/tmp/file2.txt
/tmp/file3.txt
Я передаю вышеупомянутый многострочный параметр Jenkins в ansible playbook, используя Плагин Jenkin ansible.
Я использовал ansible, чтобы преобразовать список файлов, представленных в параметре multiline, в строку с разделителями-запятыми.
Ожидаемый результат: /tmp/file1.txt,/tmp/file2.txt,/tmp/file3.txt
Ansible debug показывает, что передаваемый параметр выглядит следующим образом:
[0;34mextra_vars: (u"files='\n/tmp/file1.txt \n\n\n /tmp/file2.txt\n\n
/tmp/file3.txt\n'",
Вот моя книга воспроизведения:
- name: Format file list to be comma seperated
set_fact:
files_list: "{{ files | replace('\n',',')}}"
Ouput:
,/tmp/file1.txt ,,, /tmp/file2.txt,,/tmp/file3.txt,
Я пытался преобразовать переменную jenkins в сценарии оболочки Jenkins execute, прежде чем передать ее в ansible, но это тоже не помогло.
Ниже приведена одна из таких попыток сценария оболочки unix:
files=`echo $files | cat -s | sed '1d;$d';`
Можете ли вы предложить?