SVN внешние и автоматизированные сборки - PullRequest
4 голосов
/ 08 августа 2009

У меня есть проект, который использует внешние элементы SVN для включения некоторых вещей (на самом деле это задачи сообщества MSBuild, но это тангенциально). Для внешнего репозитория требуется имя пользователя «гость», но нет пароля.

Я установил свойство externals, и оно прекрасно работает при локальном обновлении SVN. Проблема возникает, когда выполняется сборка непрерывной интеграции TeamCity. TeamCity пытается проверить источники и заглушить внешние, потому что не знает имени пользователя.

Я пытался определить внешние объекты как отдельный корень SVN в TeamCity, но это не сработало, поэтому я не думаю, что это решение.

Так как мне сделать эту работу? Как я могу сообщить TeamCity, что ему нужно войти во внешнее хранилище SVN?

Ответы [ 5 ]

4 голосов
/ 08 августа 2009

Если пароль не требуется, только имя пользователя, то вы можете легко настроить его в файле конфигурации servers (в Windows он расположен в %APPDATA%\Subversion\servers).

Укажите сервер, а затем установите параметр «имя пользователя». Например:

[groups]
communitytasks = *.comunityserver.com

[communitytasks]
username = guest
2 голосов
/ 24 августа 2009

TeamCity использует кэшированную информацию аутентификации от клиента SVN для доступа к внешним устройствам. Нет другого способа указать внешнюю аутентификационную информацию, кроме доступа к удаленному серверу из клиента командной строки, локального кэширования учетных данных и использования их TeamCity (в настройках TeamCity SVN есть флажок, использовать ли сохраненные настройки SVN)

2 голосов
/ 08 августа 2009

Информация аутентификации хранится в файле конфигурации, локальном для пользователя, запускающего программу. Или, по крайней мере, его можно настроить для этого.

Бьюсь об заклад, агентская программа TeamCity работает под другим пользователем, нежели тот, с которым вы вошли на компьютер. Если это произойдет, попробуйте просто войти в систему с тем же пользователем, а затем выполнить svn checkout для временного каталога и ввести имя пользователя и пароль. Это будет кэшировано, и поэтому, когда TeamCity запускает SVN под тем же пользователем, он должен повторно использовать эту информацию.

1 голос
/ 11 ноября 2013

Не относится к TeamCity, но если вам нужно указать, какое имя пользователя использовать при извлечении репозитория svn:externals:

В свойстве svn:externals не указывайте имя пользователя:

the_vendor_dir     svn+ssh://hostname/path/to/repo

По умолчанию при оформлении заказа будет использоваться имя пользователя текущего пользователя. Чтобы использовать другое имя пользователя:

~/.subversion/config:
[tunnels]
ssh = $SVN_SSH ssh -ljdoe

Это приведет к тому, что Subversion будет использовать jdoe в качестве имени пользователя для любого туннеля svn+ssh, в котором не указано имя пользователя.

Вместо изменения туннеля svn+ssh на уровне Subversion вы также можете изменить его на уровне SSH:

~/.ssh/config:
Host svn.example.com
   User jdoe

Ответ Стефана выше о ~/.subversion/servers не сработал для меня, и не похоже, что он должен работать, поскольку настройка username не задокументирована в этом файле.

0 голосов
/ 08 августа 2009

Я никогда не использовал TeamCity, но использовал другие инструменты CI.

Вместо того, чтобы проводить опрос TeamCity, репозиторий SVN для новых ревизий. Может быть, хук после фиксации вызывает TeamCity, но перед этим он должен запустить скрипт ant, который svn обновляет каталог, локальный для сервера TeamCity. При первом обращении к этому каталогу у вас должна быть возможность установить внешние параметры.

...