Я управляю несколькими проектами в CruiseControl.NET. Многие из них не имеют ошибок сборки и имеют успешные сборки. Все они пытаются получить последний код до сборки.
Я заметил, что они часто терпят неудачу в строительстве; CruiseControl сообщает «Исключение». Исключением является ошибка SVN 500 (внутренняя ошибка сервера). Он срабатывает случайно, но постоянно (например, в одном проекте каждая чередующаяся сборка дает сбой).
Я попытался проверить некоторые из этих спорадически провальных проектов с одинаковыми учетными данными, и это работает. Я знаю сборку проектов, потому что не каждая сборка дает сбой.
В чем может быть проблема?
Для чего это стоит, вот верхняя строка примерного исключения (без URL-адреса проекта SVN или учетных данных):
ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'https://some/url/trunk'
. Process command: C:\Program Files\CollabNet Subversion Client\svn.exe log https://some/url/trunk -r "{2010-12-04T09:09:19Z}:{2010-12-07T09:08:48Z}" --verbose --xml --username ******** --password ******** --non-interactive --no-auth-cache
Редактировать: Иногда это происходит из-за конфликта SVN в локальной папке. Но это не соответствует.
Щедрость : я добавил вознаграждение за общее решение этого вопроса: как можно настроить CC.NET для корректного управления ошибками SVN, т.е. не обрабатывать сбои SVN, вызванные периодической проверкой обновлений (в отличие от запланированных ежедневных сборок) в качестве сбоев сборки, но вместо этого корректно откатывается до тех пор, пока не будет исправлено или пока не восстановится соединение.
Мне не удалось понять это самому, хотя я не эксперт по CC.NET и давно не искал. Есть ли поддержка для этого или это нужно кодировать? Спасибо!
Чтобы уточнить,
- У нас есть сервер CC.NET, который необходимо настроить для проверки новых коммитов и извлечения + сборки + тестирования всех изменений и сообщения о результате.
- Однако, если сервер SVN выходит из строя или мы теряем соединение с ним, он обрабатывает это так, как если бы последний коммит прервал сборку: он устанавливает красный статус сборки и отправляет последнему коммитеру сообщение по электронной почте, как если бы это была его ошибка. .
- Да, это будет проблемой для ежедневной сборки, но для непрерывной интеграции каждого коммита я не думаю, что это полезное поведение.