Azure DevOps:docker-通过 SSH 编写的正常消息被解释为错误

Azure DevOps: docker-compose over SSH normal messages interpreted as error

docker-撰写,正常消息在 Azure DevOps 中解释为错误

我在 Azure DevOps 中有发布管道,我通过 SSH 和 运行 docker-compose up 命令与其他命令连接到服务器。

问题是正常消息被解释为错误,因此即使一切都成功,发布也会失败。

此版本发布后一切正常,运行。

有谁知道为什么这些消息被解释为错误?

我发现 docker 将这些消息写入 stderr 而不是 stdout。在 SSH 任务中的 Azure DevOps 管道中,有选项 Fail on STDERR 默认情况下选中。当我取消选中此选项时,发布不再在此步骤中失败,甚至消息都被标记为错误。

真正困扰我的是,现在即使发生了一些真正的错误,它也会被忽略。我真的不知道他们为什么设计成这样,但那是另一个话题。

链接:https://github.com/docker/compose/issues/5296

在它应该在 Azure Devops 端(恕我直言)修复之前,作为一种解决方法,可以通过将 STDERR 和 STDOUT 重定向到变量并处理 docker-compose 命令的退出代码来解决该问题

示例:

# Suppress STDERR messages,  

OUTPUT_MESSAGE=$(sudo docker-compose  up --force-recreate -d  2>&1)

#Handle exit code

if [ $? -eq 0 ]
then
  echo $OUTPUT_MESSAGE
  echo "Deployed successfully"
  exit 0
else
  echo "Deployment failed" 
  echo $OUTPUT_MESSAGE
  exit 1
fi