无法格式化作为多行 jenkins 参数传递给 Ansible 的字符串



我有一个多行字符串 Jenkins 参数。

jenkins 没有像为单行字符串参数那样为多行字符串提供修剪功能。

因此,用户可以在多行参数中输入具有前导、尾随空格或只是空白行的详细信息,如下所示。

/tmp/file1.txt 

/tmp/file2.txt
/tmp/file3.txt

我使用 Jenkin 的 ansible 插件将上述 Jenkins 多行参数传递给 ansible playbook。

我使用 ansible 将多行参数中提供的文件列表转换为逗号分隔字符串。

预期输出:/tmp/file1.txt,/tmp/file2.txt,/tmp/file3.txt

Ansible 调试显示正在传递的参数如下所示:

[0;34mextra_vars: (u"files='n/tmp/file1.txt nnn    /tmp/file2.txtnn
/tmp/file3.txtn'",

这是我的剧本:

- 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 执行 shell 脚本中转换 jenkins 变量,然后再将其传递给 ansible,但这也没有帮助。

下面是一个在 unix shell 脚本上的尝试:

files=`echo $files | cat -s | sed '1d;$d';`

你能建议一下吗?

我会把这个放在这里,所以答案很清楚。

该问题的解决方案是使用修剪。它将摆脱前导和尾随空格。

最新更新