我有一个多行字符串 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';`
你能建议一下吗?
我会把这个放在这里,所以答案很清楚。
该问题的解决方案是使用修剪。它将摆脱前导和尾随空格。