Невозможно отформатировать строку, переданную как многострочный параметр jenkins, в Ansible - PullRequest
0 голосов
/ 27 января 2020

У меня есть многострочный строковый параметр 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';`

Можете ли вы предложить?

1 Ответ

1 голос
/ 28 января 2020

Я положу это здесь, так что ответ ясен.

Решение проблемы заключается в использовании trim . Это избавит от ведущих и конечных мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...