由于在Jenkins的构建过程中挂起了一个python进程(yandex-tank)的一些问题(之后构建无法停止)我需要使用一些带有超时或使用超时的额外kill命令来停止这个有问题的进程命令本身:
timeout $TIMEOUT yandex-tank-jmeter -i -o "jmeter.jmx=$WORKSPACE/$TEST_PLAN"
超时发送默认(15)终止信号,但之后构建进入状态FAILED。
是否有任何变通方法或特殊终止信号可以使构建成功?
答案 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
一旦发生错误,詹金斯将不再终止。