Тема
CI/CD и дефекты
Эндпоинты /api/pipelines входят в модуль ci (тариф Pro). Как отправлять результаты тестов из пайплайна — в разделе Отправка результатов из CI и в описании импорта отчёта.
Пайплайны
GET /api/pipelines— история пайплайнов.GET /api/changelogs— журнал изменений содержимого (?testCaseId=— журнал одного кейса).GET /api/pipelines/branches— ветки настроенного репозитория; если их нельзя получить, возвращается только настроенная ветка с пояснением.GET /api/pipelines/:pipelineId/plan?branch=&workflowFile=— тест-план, для которого Kvalli запустил этот пайплайн ({ planKey }, или404, если не для плана).pipelineId— id пайплайна GitLab или workflow run GitHub. Читается и ключом CI сruns:import; так спрашиваетkvalli testplanбезKVALLI_PLAN. Run GitHub, который Kvalli ещё не связал со своим запуском, подбирается по ветке и файлу workflow за последние 15 минут и получает этот id; если таких запусков два —409.POST /api/pipelines/trigger{ branch, workflowFile?, workflowName? }— нужно правоpipelines:trigger(администратор, лид, редактор; неruns:write). Создаёт пайплайн в настроенном проекте GitLab или запускает воркфлоу GitHub на веткеbranch, которая должна быть веткой по умолчанию репозитория или веткой подautotest/(иначе400). Файл воркфлоу GitHub — простое имя*.yml/*.yaml, и если в настройках репозитория заданciWorkflowFiles, — одно из перечисленных там. То, что вернул провайдер, записывается: id, url, коммит и статус. Если репозиторий и токен не настроены, запрос отклоняется и ничего не записывается.
Дефекты
POST /api/defects/push — отправить дефект в настроенный трекер (Jira, YouTrack).
- Тело:
{ "title": "string", "description": "string" } - Ответ:
{ "success": true, "provider": "jira", "issueId": "PROJ-123", "issueUrl": "..." }, плюсisSimulated: trueпри пробном запуске. - Если трекер не настроен, запрос отклоняется, если только он не просит симуляцию через
?dryRun=true(илиdryRun: trueв теле); ключ задачи никогда не выдумывается. Пробный запуск никогда не обращается к трекеру, настроен он или нет, и его ответ содержитisSimulated: true. - Заголовок
Idempotency-Keyделает повтор безопасным: тот же ключ от того же вызывающего в течение десяти минут возвращает первую задачу, а не заводит ещё одну (Idempotent-Replayed: true).POST /api/agents/approve-cases(cases:write,{ cases: [...] }) учитывает этот заголовок так же.
Дефект по результату прогона заводится через POST /api/runs/:id/items/:itemId/defect, по заметке исследовательской сессии — через POST /api/sessions/:key/notes/:noteId/defect; см. Прогоны.