【发布时间】:2019-06-02 22:52:27
【问题描述】:
我们知道,默认情况下,gitlab ci runners 使用set -o pipefail,如coderwall.com 中所述,此特定选项将管道的退出代码设置为最右边命令的退出代码,以非零状态退出,或者如果管道的所有命令都成功退出,则为零。
我们都使用“|| true”语句来防止 gitlab ci 作业在真正的出口 1 上失败(以允许后处理失败),例如,如果我的 grep 进行出口 1 但我认为这是正常,因此我不希望我的工作失败我写:
job:
script:
- grep "a" myfile.txt || true
但是当我使用函数而不是命令或脚本时,它不再起作用了:(
带有脚本的工作示例(给我退出 0):
job:
script:
- echo "exit 1" > test
- chmox u+x test
- test || true
使用命令的工作示例(给我退出 0):
job:
script:
- exit 1 || true
具有功能的非工作示例(给我退出 1):
job:
script:
- function test { exit 1; }
- test || true
具有功能的非工作示例(给我退出 1):
job:
script:
- function test { exit 1; }
- (test || true)
我不明白处理退出代码在脚本、命令或函数之间有什么区别。
有人有解决办法吗?
【问题讨论】:
标签: function yaml exit gitlab-ci gitlab-ci-runner