Я некоторое время настраивал и тестировал CCNet, используя Virtual PC для его размещения. Все прошло хорошо, и было решено перенести конфигурацию в расположение сервера - что прошло так, как и следовало ожидать. Несколько твиков и ударов, и у меня всё заработало, как и раньше.
Проблема в том, что теперь нам нужно запустить CCNet как сервис, который оказывается проблематичным.
Я настроил пользователя на уровне домена с теми же правами доступа, что и у меня (в конце концов, консольное приложение работало со мной уже около 3 месяцев) и настроил службу для работы под этим пользователем.
Я запустил службу, и она зависла! [Я не буду утомлять вас подробностями о том, как заставить службу останавливаться и закрывать сокеты, которые были открыты]. Когда я в конце концов смог снова запустить консоль, я выполнил «Запуск от имени» и ввел данные пользователя «cruisecontrol», нажал «ОК» и увидел, что возникла проблема с доступом к SVN через https. Я отсортировал это, запустив IE как 'cruisecontrol', перейдя в хранилище и приняв / установив сертификат.
Затем, когда я запустил консольное приложение как 'cruisecontrol', оно зависло после следующих строк:
2009-01-15 16:55:50,994 [Pepsi Webservices:DEBUG] Running Subversion with arguments : log --xml --limit 1 <a href="https://ash-dev-005.[path" rel="nofollow noreferrer">https://ash-dev-005.[path</a> to trunk]</p>
<p>2009-01-15 16:55:51,478 [Pepsi Webservices:DEBUG] Authentication realm: <a href="https://ash-dev-005.[path" rel="nofollow noreferrer">https://ash-dev-005.[path</a> to repository] Subversion Repositories
После истечения времени ожидания я могу закрыть консоль, запустить ее как обычно (то есть, как я), и она работает нормально. Я попытался войти на сервер как пользователь 'cruisecontrol' и попытался запустить консоль, но с тем же результатом.
Теперь, вот в чем дело: сегодня утром я вошел на сервер как пользователь 'cruisecontrol' и открыл окно команд. Я перешел к стволу моего проекта и набрал 'svn update', и мне предложили ввести пароль.
Это не удивительно, но строка выше этого приглашения была строкой «Область аутентификации: ...» выше! Если посмотреть на файл журнала, то сразу после того, как CCNet завершит процесс, появится запрос пароля. CCNet / SVN ожидает ввода пароля, а затем тайм-аут? Если так, то почему он не использует тот, который находится в файле конфигурации?
Я ввел пароль, и обновление прошло без проблем (поэтому у пользователя cruisecontrol есть разрешения на доступ к хранилищу с сервера). Я ввел команду снова и мне не было предложено второй раз, поэтому я попытался открыть новое командное окно и повторно запустить команду - по-прежнему не запрашивался пароль, поэтому я вышел из системы и снова (как в системе cruisecontrol) и повторил попытку, но все равно не получил запрос .
Хорошая новость заключается в том, что когда я запускаю консольное приложение от имени пользователя cruisecontrol (вошел ли он в систему как cruisecontrol или просто использует Run As), все выглядит нормально.
Так в чем мой вопрос?
Хорошо, почему CCNet не использует пароль в файле конфигурации?
Как ввод пароля в командной строке решил проблему (и будет ли она сохраняться)?
Любые предложения / понимание приветствуется.