持续集成管道失败:退出代码1

时间:2018-05-16 09:34:44

标签: bash circleci

作为我的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

1 个答案:

答案 0 :(得分:1)

如果文件不存在,那么是的,[[ -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)