bash - 持续集成管道失败:退出并显示代码 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
解决方案
如果文件不存在,那么是的,[[ -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)
推荐阅读
- angularjs - Angular JS - Rest API - 从浏览器发送但在服务器中未收到的授权
- sql - 每个月的最后一天计算
- c - 具有柔性阵列成员的不透明结构
- azure-active-directory - 我可以在 Windows Pro 中设置 Active Directory 域服务还是需要 Windows Server 操作系统?
- inheritance - 无法继承 hasMany 属性
- node.js - Nodejs 异步良好实践
- swift - Swift 5 更新后 Firebase Cocoa Pods 错误
- ansible - 使用 Ansible 获取 AWS 实例详细信息
- java - 如何更新 PostgreSQL 数据库中的时间戳列?
- laravel - 使用 PhpUnit 测试在 Laravel 5 包中包含 @include 或 @extend 指令的刀片视图