TeamCity ingest
Отправка логов TeamCity в Exlogare через Build Step с условием on failure.
POST /api/ingest/teamcity принимает лог упавшей сборки и возвращает RCA.
Обязательные поля
| Поле | Тип | Заметки |
|---|---|---|
build_type_id | string | id конфигурации (%system.teamcity.buildType.id%). |
build_id | int | глобальный id сборки (%teamcity.build.id%). |
build_number | string | %system.build.number%. |
status | string | failure / success / error / cancelled / running. |
log | string | Лог упавшего шага, до 10 МиБ. |
branch, commit_sha, build_url, project_name | опционально |
Build step (рекомендуется)
Добавьте финальный Command Line шаг с условием “Execute always (even if build is failed)”:
if [ "%system.teamcity.build.is.successful%" != "true" ]; then
curl -fsS -X POST https://api.exlogare.net/api/ingest/teamcity \
-H "Authorization: Bearer %env.EXLOGARE_TOKEN%" \
-H "Content-Type: application/json" \
-d "$(jq -n \
--arg bt '%system.teamcity.buildType.id%' \
--arg bn '%system.build.number%' \
--arg url '%teamcity.serverUrl%/buildConfiguration/%system.teamcity.buildType.id%/%teamcity.build.id%' \
--arg br '%teamcity.build.branch%' \
--arg sha '%build.vcs.number%' \
--arg pr '%system.teamcity.projectName%' \
--arg log "$(cat build.log)" \
'{build_type_id:$bt, build_id:'%teamcity.build.id%', build_number:$bn, status:"failure", branch:$br, commit_sha:$sha, build_url:$url, project_name:$pr, log:$log}')"
fi
EXLOGARE_TOKEN заведите как Password-параметр проекта.
Советы
- TeamCity агрессивно эскейпит
%— оборачивайте раскрытия в одинарные кавычки. - Используйте параметр в корне проекта, чтобы все child-конфигурации наследовали
EXLOGARE_TOKEN. - Маскируйте токен через
##teamcity[setParameter ...]если нужно вывести что-то отладочное.