为什么多行 shell 代码不会在 codebuild 项目中的 bulid 失败?

Zha*_* Yi 5 amazon-web-services aws-codebuild

我正在使用codebuildCI 并在构建规范文件中实现一些脚本。一段代码是多行if命令,例如:

 - |
        if [ [ -v $DB_TABLE_NAME  ] && [ $IS_PRIMARY_REGION != 'true' ] ]; then
          yarn test 
        elif [ [ $IS_PRIMARY_REGION == 'false' ] ]; then
          yarn test $PRIMARY_REGION
        fi
Run Code Online (Sandbox Code Playgroud)

问题是如果yarn test内部if失败,codebuild 项目不会失败。结果就成功了。如何使多行语句构建失败?

小智 0

运行多行 Codebuild 命令就像运行 bash 脚本一样。如果您希望命令在任何行(子命令)返回非零退出状态时失败,则必须set -e在命令开头添加 。一旦“脚本”执行的任何命令失败,它就会指示“脚本”因错误而终止。

例子

这将显示“之前”和“之后”。

commands:
  - |
    echo "before"
    false
    echo "after"
Run Code Online (Sandbox Code Playgroud)

这样只会显示“before”,那么执行就会失败。

commands:
  - |
    set -e
    echo "before"
    false
    echo "after"
Run Code Online (Sandbox Code Playgroud)