如果退出代码,Jenkins在执行所有命令后失败构建!=

时间:2017-03-10 15:13:37

标签: shell jenkins

我尝试在单个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代码分析的,我想知道所有在失败之前出错了。

提前感谢您的帮助。

2 个答案:

答案 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;

为了让命令失败。