У меня есть конвейер 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, а затем каким-то образом отправить их на конечную точку получения на клиенте.
Но я понятия не имею, с чего начать и как это сделать .. Может кто-нибудь помочь мне в этом или хотя бы указать мне правильное направление?