[英]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.