脚本中的Jenkins和kill命令使构建失败

时间:2015-10-28 09:26:52

标签: jenkins kill yandex-tank

由于在Jenkins的构建过程中挂起了一个python进程(yandex-tank)的一些问题(之后构建无法停止)我需要使用一些带有超时或使用超时的额外kill命令来停止这个有问题的进程命令本身:

timeout $TIMEOUT yandex-tank-jmeter -i -o "jmeter.jmx=$WORKSPACE/$TEST_PLAN"

超时发送默认(15)终止信号,但之后构建进入状态FAILED。

是否有任何变通方法或特殊终止信号可以使构建成功?

2 个答案:

答案 0 :(得分:4)

您是否尝试过手动退出代码覆盖?

timeout $TIMEOUT yandex-tank-jmeter -i -o "jmeter.jmx=$WORKSPACE/$TEST_PLAN"; RES=$?
//If  the  command timed out, then RES equals 124.
...
//at the end of job scenario:
if [ $RES -eq 124 ]; then RES=0;
fi
exit $RES  

答案 1 :(得分:0)

根据Jenkins文档中的“执行外壳”步骤:

  

默认情况下,将使用“ -ex”选项调用外壳程序。

因此,詹金斯(Jenkins)将所有外壳程序代码放在temp目录中的外壳程序脚本文件中,类似于/tmp/sh/jenkins45723947385985.sh,然后按以下方式执行它:

/bin/sh -xe /tmp/sh/jenkins45723947385985.sh

这可以在作业的控制台输出中看到。

-xe中的e选项表示外壳程序在出现错误后将立即退出。要更改此行为,请在Jenkins Shell脚本(例如

)的开头添加一条自定义的shebang行。
#!/bin/sh -x

一旦发生错误,詹金斯将不再终止。