管道成功时显示失败

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

我的 Azure DevOps 管道拉取 Docker 映像并创建 5 个容器。一个容器设置其他 4 个容器,然后退出,表明设置成功。但是,Azure Pipelines 由于“已退出”状态而将管道标记为失败,即使一切正常运行。

我唯一的修复方法是添加

continueOnError: true
,但这只会用警告标记管道。我也尝试过
condition: succeededOrFailed()
,但它仍然将管道标记为失败。

以下是日志示例:

2024-07-01T14:47:08.8069778Z ##[error] Container airflow-postgres-1  Healthy
2024-07-01T14:47:08.8073598Z ##[error] Container airflow-postgres-1  Healthy
2024-07-01T14:47:08.8075304Z ##[error] Container airflow-redis-1  Healthy
2024-07-01T14:47:18.3181399Z ##[error] Container airflow-airflow-init-1  Exited  Container airflow-airflow-init-1  Exited  Container airflow-airflow-init-1  Exited

任何在

azure-pipelines.yml
中处理此问题的指导或提示将不胜感激,我希望管道能够继续处理管道,而不是标记为已退出,从而生成失败的作业。

这是 azure-pipelines.yml 的相关示例。

  - task: SSH@0
    inputs:
      sshEndpoint: $(SSH_SERVICE_CONNECTION)
      runOptions: 'inline'
      inline: |
        az login --identity
        az acr login --name $(IMAGE_REGISTRY)

        cd $(PROJECT_DIR)
        export AIRFLOW_UID=$(AIRFLOW_UID) 
        export PROJECT_DIR=$(PROJECT_DIR)

        docker pull $(IMAGE_REGISTRY).azurecr.io/$(IMAGE_NAME):latest
        docker compose -f docker-compose.prod.yaml up -d
    continueOnError: true
azure-devops azure-pipelines airflow
1个回答
0
投票

看起来由于某种原因,这些日志被写入了 stderr。根据 docs,SSH 任务的默认行为是在将某些内容写入 stderr 时使任务失败。要禁用此行为,请将

failOnStdErr
选项设置为
false
:

  - task: SSH@0
    inputs:
      sshEndpoint: $(SSH_SERVICE_CONNECTION)
      runOptions: 'inline'
      failOnStdErr: false
      inline: |
        az login --identity
        az acr login --name $(IMAGE_REGISTRY)

        cd $(PROJECT_DIR)
        export AIRFLOW_UID=$(AIRFLOW_UID) 
        export PROJECT_DIR=$(PROJECT_DIR)

        docker pull $(IMAGE_REGISTRY).azurecr.io/$(IMAGE_NAME):latest
        docker compose -f docker-compose.prod.yaml up -d
© www.soinside.com 2019 - 2024. All rights reserved.