我尝试在单个shell执行构建步骤中运行多个命令。如果其中一个命令退出0以外的代码,则构建将立即失败。这是默认情况。
我希望构建继续执行此构建步骤中的所有命令,即使给出了一个或多个退出代码0。执行完所有这些命令后,如果退出代码不是0,我希望构建失败。
有没有办法只使用控制台命令而不使用(shell)脚本?
这些命令是我试图执行的命令:
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 -P8 php -l
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 phpcs --standard=PSR2
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 -I file phpmd file text cleancode,codesize,controversial,design,naming,unusedcode
您可能知道这些是用于PHP代码分析的,我想知道所有在失败之前出错了。
提前感谢您的帮助。
答案 0 :(得分:3)
使用变量记录其中一个是否失败,然后检查该变量是否在脚本末尾设置:
FAILURE=0
command1 || FAILURE=1
command2 || FAILURE=1
command3 || FAILURE=1
if [ $FAILURE -eq 1 ]
then
echo "One or more failures!
exit 1
fi
所以在你的情况下:
FAILURE=0
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 -P8 php -l || FAILURE=1
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 phpcs --standard=PSR2 || FAILURE=1
git diff origin/develop --name-only --diff-filter=AM | grep .php | xargs -n1 -I file phpmd file text cleancode,codesize,controversial,design,naming,unusedcode || FAILURE=1
if [ $FAILURE -eq 1 ]
then
echo "One or more failures!
exit 1
fi
答案 1 :(得分:0)
使用shell,您可以:
command || true;
为了让命令失败。