Gitlab runner in docker '$ yes | true' returns 出口 1

Gitlab runner in docker '$ yes | true' returns with exit 1

运行 .gitlab 中的这个命令-ci.yml:

task:
  script:
    - yes | true
    - yes | someOtherCommandWhichNeedsYOrN

Returns:

$ yes | true
ERROR: Job failed: exit status 1

任何线索、想法为什么会发生或如何调试?

设置: docker

中的 Gitlab runner

还不能评论。

我会将脚本提取到一个文件中,然后 运行 从管道中提取该文件,其中包含一些调试内容,看看您是否可以重现它。

确保你能到达而不是越过相关线路。

我可能会尝试以下方法来获取更多信息?

( set -x  ; yes | true ; echo status: "${PIPESTATUS[@]}" )

查看文件中是否有一些奇怪的字符或设置了一些奇怪的模式。

确保你是正确的shell,真正可以内置所以值得检查。

祝你好运。

如果 运行 set -o pipefail,shell 管道中任何阶段的故障将导致整个管道被视为失败。当 yes 尝试写入 stdout 但其 stdin 与 stdout 连接的程序未读取时,这将导致 EPIPE 信号——因此,这是一个预期的失败消息, shell 通常会忽略(有利于仅将管道的最后一个组件视为对该管道的退出状态很重要)。

  • 使用 set +o pipefail

  • 为当前脚本的其余部分关闭此功能
  • 明确忽略单个失败:{ yes || :; } | true