Как получить выходные данные задания Buildkite через API REST Buildkite - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть конвейер Buildkite: sample, который я использую для запуска модульных тестов в моем приложении: sampleapp

В приложении Buildkite я настроил задание - Unit Test, которое фактически выполняетсямодульные тесты через скрипт: unittest.sh

Вывод этого скрипта (в форме журналов) доступен в пользовательском интерфейсе Buildkite. Если я открою страницу сборки: https://www.buildkite.com/org/sample/builds/buildNumber и нажму на модульный тестРаздел.Выходные данные представлены в виде журналов запуска сценариев, и в конце они указывают результаты выполнения модуля в следующем формате:

[16:17:02]: ▸ Test Succeeded
+--------------------+-----+
|       Test Results       |
+--------------------+-----+
| Number of tests    | 773 |
| Number of failures | 0   |
+--------------------+-----+

Теперь у меня есть клиент, который вызывает API-интерфейс BuildKite REST черезконечная точка https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds, которая возвращает список всех сборок в формате JSON.Например, для каждой сборки имеется много данных (подмножество данных):

[
  {
    "id": "xyz",
    "url": "xyz",
    "number": 1,
    "creator": {...},
    "pipeline:" {...},
    "jobs": [
      {
        "id": "abc",
        "type": "script",
        "name": "Unit Test",
        "command": "sh .buildkite/unittest.sh",
        "log_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/log",
        "raw_log_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/log.txt",
        "artifacts_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/artifacts"
      }
    ]
  }
]

Но в этом ответе JSON нет информации о результатах теста (т. Е. О количестве тестов, пройденных тестах и ​​т. Д.).), о котором сообщалось в журналах сценария unittest.sh.

Клиенту также необходимо каким-то образом получать доступ к результатам сборки при вызове REST API.

Один из способов - клиентсначала получите ответ JSON для сборок и ответ от этого для каждой сборки, извлеките журналы (как указано в части log_url ответа JSON), а затем проанализируйте их (каким-либо образом?), чтобы извлечь результаты прохождения / неудачи модульного теста.

Но это займет много времени, поскольку на ответ приходится 30 сборок, а файлы журналов достаточно велики, поэтому для загрузки и анализа одного файла журнала требуется некоторое время.

Еще одна проблемаздесь можно было бы обрабатывать сценарии, в которых сам прогон модульного теста имел некоторые проблемы, и номера результатов теста не сообщались в конце файла, но сообщалось о некоторой ошибке.

Мне интересно, есть ли лучший способсделать это?Может быть, используя веб-хуки для анализа данных на самом Buildkite, а затем каким-то образом отправить их на конечную точку получения на клиенте.

Но я понятия не имею, с чего начать и как это сделать .. Может кто-нибудь помочь мне в этом или хотя бы указать мне правильное направление?

...