2017-02-13 46 views
0

我在jenkins中很新,我想从jenkins控制台输出中过滤掉只有jenkins输出的我的unix脚本通过jenkins作业运行 为了简化我的场景,我有一个返回json输出的MyScript unix脚本。 jenkins作业使用“Execute shell”构建操作来封装MyScript执行。 当我运行詹金斯工作,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的詹金斯的工作,我们需要得到只有被叫UNIX脚本的JSON输出需要它:

curl -s -k -u ... --request GET "https://<jenkins uri>/jenkins/view/ScriptWrapper/job/ScriptWrapper/19/consoleText" 

我们试图定义一个解析规则文件,但在这我们只能在“Parsed Console Output”jenkins视图中突出显示控制台输出中的某些行。 此外,它似乎这个“经分析控制台输出”是无法通过REST API访问:

curl -s -k -u ... --request GET "https://<jenkins uri>/jenkins/view/ScriptWrapper/job/ScriptWrapper/19/parsed_console" 

- >它不工作

有什么办法可以过滤掉詹金斯控制台输出? 我们也在评估使用Jenkins Groovy Postbuild插件的可能性。你认为它可以帮助吗? 我事先感谢您的任何建议。

回答

1

如果我理解正确的问题,你希望生成只包含你想要的文本的清洁输出? 如果是这样,那么我建议你修改你的shell脚本以将所需的文本输出到一个文件中,然后使用Jenkins中的“存档工件”函数来使文件内容可用,或者使用“html publisher”插件“发布”该文件。 https://wiki.jenkins-ci.org/display/JENKINS/HTML+Publisher+Plugin

我的第三个选择可能是修改你的shell脚本,输出“magic cookies”作为你想要的字符串的分隔符。 通过这种方式,您可以使用REST API获取整个控制台输出,然后使用简单的正则表达式轻松过滤掉所需的文本。

+0

嗨Timmy, 是的,我们希望只生成脚本返回的json输出。 第三个选项不适用,如下所示: 1)外部应用程序调用jenkins rest api并且仅期望xml/json结果。 3)myScript返回json输出 选项html发布者: ERR目录'/ jenkins/workspace/ScriptWrapper/response'存在但失败,但失败复制到'/ jenkins/jobs/ScriptWrapper/htmlreports/Job_Response' index.html应该如何结构化? 或者myScript应该返回html输出/应该生成这样的index.html? – nuvola

+0

嗨提米, 对不起,低于约错误使用HTML发行的详细信息: 选项HTML出版商: HTML DIR:./response 索引页:指数。html 报告标题:作业回复 错误:目录'/ jenkins/workspace/ScriptWrapper/response'存在,但未能复制到'/ jenkins/jobs/ScriptWrapper/htmlreports/Job_Response' 错误:由于您的构建成功, – nuvola

+0

不确定这些来自html发布者的错误。它应该能够发布任何文件。你有没有试过“存档神器”功能? –