Jenkins shell脚本无法在dotnet构建失败时失败

mwg9r5ms  于 2023-01-20  发布在  Jenkins
关注(0)|答案(1)|浏览(194)

我有shell脚本来构建dotnet解决方案,我在Jenkins中运行它,但它报告构建成功,即使dotnet构建返回错误。
我的生成代码:

if [ -f $SOLUTION ]; then
  echo "Building ${branch} :" | tee msbuild.log
  STATUS=$(dotnet build $SOLUTION -v m -o $BUILD_TARGET/${branch}) | tee msbuild.log
  if ! [ $STATUS -eq 0 ]; then
     echo "MSBuild failed"
     exit 1;
  fi

else echo“找不到解决方案:${解决方案}!”|tee msbuild.log fi我正在检查最后一个状态码以检测错误,然后通过返回1使Jenkins作业失败,但由于某些原因,它甚至没有执行if块。在Jenkins控制台中,我可以看到来自dotnet build的错误消息:x1c 0d1x什么原因会导致此行为?是否由于此设置:#!/bin/bash +x
编辑:修正了上述代码的当前版本的错误。现在每个构建都因为语法错误而失败:[: -eq: unary operator expected

yyyllmsg

yyyllmsg1#

$STATUS变量没有设置。我认为tee管道没有返回值。
你可以试试

if [ -f $SOLUTION ]; then
  echo "Building ${branch} :" | tee msbuild.log
  STATUS=$(dotnet build $SOLUTION -v m -o $BUILD_TARGET/${branch})
  echo "$STATUS" > msbuild.log
  if ! [ $STATUS -eq 0 ]; then
     echo "MSBuild failed"
     exit 1;
  fi

相关问题