我有一个django测试套件,它使用以下版本在jenkins上运行:
virtualenv -p /usr/bin/python3.5 etl_api_virtualenv
cd etl_api_virtualenv
source bin/activate
python --version
cd $WORKSPACE/leg_apps
ls
pip install -r requirements-dev.pip
./api/test/run_api_tests.sh $WEB_ENV
这是有效的,但是当某些单元测试失败时,作业/构建仍然标记为成功。如果测试都没有通过,我无法弄清楚如何使作业指示灯变红并标记为失败。我甚至不确定Google会尝试解决这个问题,所以请原谅明显的"缺乏努力" ......事实并非如此。我一开始就没死了。
编辑:
我认为问题可能是我不知道如何根据测试是否失败来使run_api_tests.sh
返回适当的代码
答案 0 :(得分:1)
您需要确保将任何非零退出代码传播到Jenkins。 Jenkins正在查看您运行的命令的退出代码,因此只要您的bash脚本在没有崩溃或具有非零退出的情况下使其结束,它将以代码0退出,表示没有任何错误。您很可能需要在./api/test/run_api_tests.sh中添加以下效果:
<command_running_tests>
# Capture the most recent exit code using $?
if [ "$?" = "0" ]; then
printf "[TEST] - executable built: ${EXEC}\n"
else
printf "[TEST] - failed\n"
exit 1 # or exit $? if you want the specific code
fi