首页 > 解决方案 > 持续集成管道失败:退出并显示代码 1

问题描述

作为我的 CircleCi 管道的一部分,我想执行以下命令。这个想法是我断言文件是否存在,如果存在,那么我想执行更多命令。在我最初的测试期间,该文件不存在,我希望整个命令返回 0。关于什么是错误的任何线索?

      command: |
        [[ -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]
         && set -a && source /tmp/workspace/${CIRCLE_BRANCH}.env && docker-compose -f /tmp/workspace/docker-stack.yml -f "stacks/docker-compose-${CIRCLE_BRANC}.yml" config > /tmp/workspace/docker-stack.yml

标签: bashcircleci

解决方案


如果文件不存在,那么是的,[[ -e "..." ]]测试将返回 1(因为它失败了)。

如果有退出状态来1破坏你的管道,你可以重写你的命令行,做这样的事情:

[[ ! -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]
|| { set -a && source /tmp/workspace/${CIRCLE_BRANCH}.env && docker-compose -f /tmp/workspace/docker-stack.yml -f "stacks/docker-compose-${CIRCLE_BRANC}.yml" config > /tmp/workspace/docker-stack.yml; }

在这里,逻辑与您的原始脚本相反:

  • [[ ! -e "stacks/docker-compose-${CIRCLE_BRANC}.yml" ]]:如果您的文件不存在,我们将退出并退出代码 0
  • 否则,我们在下一个块内执行命令(如果块成功则退出代码 0,否则为 1)

推荐阅读