繁体   English   中英

在Jenkins上并行运行脚本时捕获错误状态

[英]Catching the error status while running scripts in parallel on Jenkins

我正在Jenkins上并行运行两个perl脚本,还有一个脚本,如果前两个脚本成功,则应执行该脚本。 如果我在script1中遇到错误,则脚本2仍然运行,因此退出状态成功。

我想以某种方式运行它,如果任何并行脚本失败,则作业应以失败状态停止。

目前我的设置看起来像

perl_script_1 &

perl_script_2 &

wait

perl_script_3

如果脚本1或2在中间失败,则该作业应以“失败”状态终止,而不执行作业3。

注意:我在Jenkins中使用tcsh shell。

我有一个类似的设置,其中我并行运行多个java进程(测试),然后等待它们完成。 如果有任何失败,则其余脚本将失败。

每个测试过程完成后都会将其结果写入要测试的文件中。
注意-下面的代码示例以bash编写,但在tcsh中应该类似。

为此,我获取每次执行的进程ID:

test1 &
test1_pid=$!
# test1 will write pass or fail to file test1_result

test2 &
test2_pid=$!

...

现在,我使用kill -0 PID命令等待进程完成
例如test1

# Check test1
kill -0 $test1_pid

# Check if process is done or not
if [ $? -ne 0 ]
then
    echo process test1 finished
    # check results
    grep fail test1_result

    if [ $? -eq 0 ]
    then
        echo test1 failed
        mark_whole_build_failed
    fi
fi

其他测试也一样(您可以循环执行以定期测试所有正在运行的进程)。
稍后根据mark_whole_build_failed调整其余的执行条件。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM