Сбой сборки через REST API с TeamCity из другой конфигурации сборки после того, как сборка уже завершена - PullRequest
2 голосов
/ 10 марта 2011

У меня есть несколько интеграционных тестов, которые TeamCity запускает при успешной сборке.Я успешно использовал TeamCity REST API, чтобы пометить сборку как пройденную или неудачную, но на самом деле хотел бы пометить статус сборки как пройденный или неудачный (таким же образом сборка не удалась из-за компиляцииили сбои модульного теста).

Документация для REST API довольно скудна.Это просто невозможно сделать через REST API или это недокументировано?

Уточнение:

Текущий процесс выглядит следующим образом:

"App" TC Конфигурация сборки на самом делесоздает приложение и запускает модульные тесты.

Конфигурация "Test" TC Build зависит от успешного завершения конфигурации "App".Если «приложение» выполняет успешную сборку (без сбоев компиляции или модульного теста), запускается конфигурация «Тест», которая устраняет артефакты сборки и запускает живые интеграционные тесты приложения.До запуска этих тестов конфигурация «Приложение» имеет статус прохождения, так как она успешно скомпилирована и не было сбоев модульных тестов.

То, что я пытаюсь сделать, - это изменить статус конфигурации приложения на «не удалось», если конфигурация «Тест» не удалась.В настоящее время я просто помечаю «Приложение» как пройденное или не пройденное, но фактический статус сборки всегда проходит.По сути, я пытаюсь заставить журнал изменений или историю отображать красный значок X для неудачной сборки, а не зеленую галочку.

«Приложение» и «Тест» - это две отдельные конфигурации сборки TeamCity.Поскольку они являются отдельными, Взаимодействие сценариев сборки, как предлагает @sharma, не сработает, так как взаимодействие сценариев сборки может быть использовано для сбоя / обновления текущей запущенной конфигурации сборки, в то время как я пытаюсь обновить / отменить отдельную и ужезавершена конфигурация сборки.

Почему у нас есть 2 отдельных конфига, а не просто запустить тесты из основной сборки?Скорость конечно!Интеграционные тесты занимают до 10 минут, и мы не хотим замедлять цикл компиляции только потому, что интеграционные тесты выполняются.

Ответы [ 3 ]

7 голосов
/ 22 июля 2015

На самом деле вы можете изменить статус сборки даже после того, как сборка будет завершена с помощью следующего недокументированного запроса (вам нужно buildId сборки, которую вы хотите изменить):

curl -v --requestPOST "http://your -teamcity-url / ajax.html " -u login: password --data "comment = Ваша причина сбоя сборки" --data "status = FAILURE" --data "changeBuildStatus= buildId"

3 голосов
/ 14 марта 2011

Вы должны быть в состоянии сделать это с помощью построить сценарии взаимодействия .

ОБНОВЛЕНИЕ : Смотрите здесь , он должен иметь "сообщения сообщенийдля журналов сборки ".Если у вас есть следующее сообщение, напечатанное на консоли, в которой вы когда-либо собираете приложение.Сборка teamcity не удастся и покажет как ошибку.Если вы измените статус на Failure, он все равно потерпит неудачу.У вас есть больше информации по ссылке, которую я предоставил.Пример сообщения, которое вы можете распечатать:

  "##teamcity[message text='Exception text' errorDetails='stack trace' status='ERROR']"

Посмотрите на это

0 голосов
/ 18 марта 2011

Таким образом, ответ на мой первоначальный вопрос: возможно ли использовать REST API для пометки сборки как сбойной в другой конфигурации сборки, заключается в том, что это невозможно.

Для поддержки TeamCity: нет способаизменить статус сборки после его завершения.Это не ограничение REST API, это просто не реализованная функция TeamCity.Вот запрос по соответствующей функции в нашем трекере: http://youtrack.jetbrains.net/issue/TW-2529

(я одобрил ответ и комментарии @ sharma, так как они были определенно информативными, но, в конечном счете, не решением моей проблемы.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...