【问题标题】:Jenkins and kill command in the script makes builds failed脚本中的 Jenkins 和 kill 命令使构建失败
【发布时间】:2015-10-28 09:26:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • yandex-tank 挂机是什么原因?与其处理后果,不如自己解决问题?
  • 也许,但目前尚不清楚发生了什么。我在这里写了我的问题:stackoverflow.com/questions/27419729/…

标签: jenkins kill yandex-tank


【解决方案1】:

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

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  

【讨论】:

  • 这对我不起作用,至少在 Jenkins 版本 2.89.2 中
【解决方案2】:

根据 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 将不再终止。

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2015-02-16
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多