Azure DevOps SSH 发布管道任务和 Docker Compose STDERR

问题描述 投票:0回答:2

我在 Azure DevOps 中使用 Classic 发布管道 并配置简单的 SSH 任务调用 docker-compose:

cd /home/asem/platform/$(ServiceName) && sudo docker-compose up -d --force-recreate

问题:任务失败并出现错误:

Docker-compose 返回 0 退出代码,但在 STDERR 中写入一些消息。管道任务将它们视为错误并失败。

问题

  1. 为什么 docker-compose 设计成这样,EXIT code = 0,但是有一些错误是写在 STDERR 里的?
  2. 任何好的解决方案(请参阅下面我的回答中找到的解决方法)?
azure-devops docker-compose azure-pipelines azure-pipelines-release-pipeline azure-pipelines-release-task
2个回答
0
投票

解决方法 1:管道 docker 将 STDERR 组合成 STDOUT,如

cd /home/asem/platform/$(ServiceName) && sudo docker-compose up -d --force-recreate 2 >&1

sudo docker-compose up -d --force-recreate 2 >&1

这行得通,但我不喜欢它,因为它可以隐藏一些真正的错误

解决方法 2:取消选中任务的“Fail on STDERR”

可行,但发布阶段会显示错误,但这并不好。


0
投票

stderr 重定向 + grep 对你有用吗?

docker compose up -d 2> >(grep -i error)

快乐之路:

有错误:

© www.soinside.com 2019 - 2024. All rights reserved.