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

问题描述 投票:0回答:2

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

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

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

是否有任何变通方法或特殊的杀死信号使构建成功?

jenkins kill yandex-tank
2个回答
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  

0
投票

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

默认情况下,将使用“-ex”选项调用shell。

因此,Jenkins将所有shell代码放入一个shell脚本文件,在temp目录中,如/tmp/sh/jenkins45723947385985.sh,然后按如下方式执行:

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

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

-xe中的e选项表示shell一出错就会退出。要更改此行为,请将自定义shebang行添加到Jenkins shell脚本的开头,例如

#!/bin/sh -x

一旦发生错误,Jenkins将不再终止。

© www.soinside.com 2019 - 2024. All rights reserved.