Как получить номер неудачного шага в конвейере Azure?

#bash #azure-devops #azure-pipelines

#bash #azure-devops #azure-конвейеры

Вопрос:

В моем конвейере Azure yaml есть шаг, для которого требуется номер шага первого неудачного шага. Есть ли способ получить эту информацию (предпочтительно в задаче bash)?

Идея состоит в том, чтобы получить журналы неудачного шага …/_apis/build/builds/777777/logs/3

Ответ №1:

Я не силен в написании сценариев bash, но вам нужно:

  1. Сначала вызовите Azure DevOps REST API на конечной точке временной шкалы:
 https://dev.azure.com/{{organization}}/{{project}}/_apis/build/builds/3477/timeline?api-version=6.0
  

где 3477 ваш идентификатор сборки.

  1. Затем просмотрите ответ и найдите первую запись с result=failed :
 {
            "previousAttempts": [],
            "id": "5caf77c8-9b10-50ef-b5c7-ca89c63e1c86",
            "parentId": "12f1170f-54f2-53f3-20dd-22fc7dff55f9",
            "type": "Task",
            "name": "Run a multi-line script",
            "startTime": "2020-09-07T12:00:04.5033333Z",
            "finishTime": "2020-09-07T12:00:04.7466667Z",
            "currentOperation": null,
            "percentComplete": null,
            "state": "completed",
            "result": "failed",
            "resultCode": null,
            "changeId": 10,
            "lastModified": "0001-01-01T00:00:00",
            "workerName": "Hosted Agent",
            "order": 4,
            "details": null,
            "errorCount": 1,
            "warningCount": 0,
            "url": null,
            "log": {
                "id": 7,
                "type": "Container",
                "url": "https://dev.azure.com/thecodemanual/4fa6b279-3db9-4cb0-aab8-e06c2ad550b2/_apis/build/builds/3477/logs/7"
            },
            "task": {
                "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
                "name": "CmdLine",
                "version": "2.164.2"
            },
            "attempt": 1,
            "identifier": null,
            "issues": [
                {
                    "type": "error",
                    "category": "General",
                    "message": "Bash exited with code '1'.",
                    "data": {
                        "type": "error",
                        "logFileLineNumber": "15"
                    }
                }
            ]
        },
  
  1. В свойстве log этой записи вы найдете URL-адрес вашего журнала
             "log": {
                "id": 7,
                "type": "Container",
                "url": "https://dev.azure.com/thecodemanual/4fa6b279-3db9-4cb0-aab8-e06c2ad550b2/_apis/build/builds/3477/logs/7"
            },