我在Jenkins中很新,我想从jenkins控制台输出中过滤出我的unix脚本的json输出通过jenkins工作运行 为了简化我的场景,我有一个返回json输出的MyScript unix脚本。 jenkins作业使用“Execute shell”构建操作包装MyScript执行。 当我运行jenkins作业时,执行MyScript并且jenkins控制台输出返回到输出下方:
Started by remote host ...
Building remotely on ... in workspace ...
Set build name.
New build name is '#11-/products/software/myScript.py'
[ScriptWrapper] $ /bin/sh -xe /tmp/hudson9139846468482145951.sh
+ /products/software/myScript.py -t ...
{'ip': '...', 'host': '...'}
Set build name.
New build name is '#11-/products/software/myScript.py'
Variable with name 'BUILD_DISPLAY_NAME' already exists, ...
Finished: SUCCESS
从上面的输出我想过滤掉我的unix脚本的json输出,即“{'ip':'...','host':'...'}”。 当我们通过REST API调用jenkins作业时需要它,我们只需要获取被调用的unix脚本的json输出:
curl -s -k -u ... --request GET "https://<jenkins uri>/jenkins/view/ScriptWrapper/job/ScriptWrapper/19/consoleText"
我们尝试定义解析规则文件,但这样我们只能在“Parsed Console Output”jenkins视图中突出显示控制台输出中的某些行。 此外,似乎无法通过rest api访问此“Parsed Console Output”:
curl -s -k -u ... --request GET "https://<jenkins uri>/jenkins/view/ScriptWrapper/job/ScriptWrapper/19/parsed_console"
- &GT;它不起作用
有没有办法过滤掉jenkins控制台输出? 我们还在评估使用Jenkins Groovy Postbuild插件的可能性。你觉得它可以帮忙吗? 我提前感谢你的任何建议。
答案 0 :(得分:1)
如果我正确理解了这个问题,您希望生成仅包含所需文本的干净输出吗? 如果是这样,那么我建议您修改shell脚本以将所需文本输出到文件,然后使用Jenkins中的“archive artifact”函数使文件内容可用,或者使用“html publisher”插件“发布“那个文件。 http://scott.ewarena.com/blog
我的第三个选项可能是修改你的shell脚本,输出“magic cookies”作为你想要的字符串周围的分隔符。 这样您就可以使用REST API获取整个控制台输出,然后使用简单的正则表达式轻松过滤掉您想要的文本。