Jenkins - 将结果发布到外部监视作业是在构建作业日志中添加垃圾

时间:2013-12-03 20:46:06

标签: jenkins jenkins-plugins jenkins-cli

我有一个外部监视器工作,我正在用curl推动另一个工作的结果并基于这个链接:

Monitoring external jobs

在我创建作业之后,我只需要运行一个curl命令,使用HEX编码的主体到指定的url,然后将创建一个构建并将输出添加到它但是我得到的是我的一部分以明文形式输出,其余以奇怪的字符输出:

Started
Asking akamai to purge this urls:
http://xxx/sites/all/modules/custom/uk.png     http://aaaaaasites/all/modules/custom/flags/jp.png
<html><head><title>401 Unauthorized</title>    </h�VC��&�G����CV�WF��&��VC�������R&R��BWF��&��VBF�66W72F�B&W6�W&6S�����&�G�����F����F�RW&�F �6�V6�7FGW2�bF�R&WVW7B�2��F�RF��RF�v�B�2��6�Ɩ�r&6�w&�V�B��"F�6�V6�7FGW2�bF�RF�6�W@�v�F��rf�"���F�W&vRF��6O request please keep in mind this is an estimated time
Waiting for another 60 seconds
Asking akamai to purge this urls:
...
..
..

我正是这样做的:

export output=`cat msg.out|xxd -c 256 -ps`

curl -k -X POST -d "<run><log encoding=\"hexBinary\">$output</log><result>0</result>  <duration>2000</duration></run>" https://$jenkinsuser:$jenkinspass@127.0.0.1/jenkins/job/akamai_purge_results/postBuildResult -H'.crumb:c775f3aa15464563456346e'

如果我认为该文件一切正常,即使我用vi编辑它也看不出任何问题。

你们有任何想法如何解决这个问题吗?

十六进制编码可能有问题吗? (我尝试使用xxd结果的hex / enc / dec页面,它们看起来很好)

感谢。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,偶然发现了这个问题:http://blog.markfeeney.com/2010/01/hexbinary-encoding.html

从该页面,您可以通过此命令获得所需的编码: echo "Hello world" | hexdump -v -e '1/1 "%02x"' 48656c6c6f20776f726c640a

解释摘录:

  

那到底是什么意思? -v表示不抑制任何重复数据   在输出中,-e是格式字符串。 hexdump非常特别   关于-e参数的格式;小心引号。   对于输入中遇到的每1个字节,1/1表示应用   以下格式化模式1次。尽管这听起来像   手册页中的默认行为,1/1不是可选的。 / 1也   可行,但1/1的可读性非常高,IMO。该   “%02x”只是标准问题的printf样式格式代码。

所以在你的情况下,你会这样做(删除'export'以支持内联变量) OUTPUT=`cat msg.out | hexdump -v -e '1/1 "%02x"'` curl -k -X POST -d "<run><log encoding=\"hexBinary\">$OUTPUT</log><result>0</result> <duration>2000</duration></run>" https://$jenkinsuser:$jenkinspass@127.0.0.1/jenkins/job/akamai_purge_results/postBuildResult -H'.crumb:c775f3aa15464563456346e'