Аутентификация в ртутных подкаталогах - PullRequest
3 голосов
/ 20 июня 2011

У меня есть ртутный репозиторий, который вытягивает зависимости, используя функциональность под-репозитория (как определено в файле .hgsub), но я изо всех сил пытаюсь заставить это работать в TeamCity.включил расширение mercurial_keyring, чтобы сохранить учетные данные (поэтому, когда TeamCity предоставляет детали аутентификации для корневого репозитория, он запоминает их для вложенных репозиториев).Я также добавил раздел [auth] в mercurial.ini:

[auth]
bitbucket.schemes = https
bitbucket.prefix = https://bitbucket.org/xyz
bitbucket.username = xyz

Если я запускаю hg clone из командной строки, мне один раз предлагают ввести пароль, и все хорошо.Но первоначальная проверка при запуске через TeamCity завершается с

VCS root: mercurial: https://bitbucket.org/xyz/projectA {instance id=23, parent id=1}, due to error: 'cmd /c hg update -C -r 4a08f587bb1f' command failed. stderr: abort: http authorization required  stdout: pulling subrepo src\Common.Library from https://bitbucket.org/xyz/common.library

Чего мне не хватает, или я поступаю по этому поводу совершенно неправильно?Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

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

Файл mercurial.ini можно поместить в <mercurial install path>\mercurial.ini, если он не работает по пути пользователя.

Не идеально, но решение ... если кто-то найдет лучшее, пожалуйста, дайте мне знать.

0 голосов
/ 15 августа 2013

Возможно, раздел [auth] вообще не следует добавлять к mercurial.ini для агента ТС.Team City использует --config auth... опции для hg.Я также рекомендовал бы не использовать mercurial_keyring, но установить имя пользователя и пароль в корне VCS - это безопасно и совместно используется разными агентами TC.

Не уверен насчет битбакета, но в других случаях используетсясхемы https может потребоваться настройка сертификатов.Это можно настроить в mercurial.ini:

[web]
cacerts =

[hostfingerprints]
# hides mercurial warnings
domain-name = ab:cd:...:01

И последняя часть: в зависимости от .hgsub может потребоваться использование режима проверки VCS «Автоматически на агенте» в настройках контроля версий Team City.

0 голосов
/ 04 марта 2013

Может быть, это было исправлено в последних версиях TeamCity, но у меня работает следующее:

  1. Настройка службы агента сборки для работы под учетной записью домена с доступом к репозиториям HG (как root, так и subrepos)
  2. Включить mercurial_keyring в агенте сборки и добавить раздел [auth] в конфигурацию mercurial
  3. Попробуйте вручную клонировать репозиторий, введите пароль.Не нужно ждать, пока весь репо будет клонирован - он может быть прерван, когда отображается сообщение «Запрос всех изменений».
  4. Получайте удовольствие - теперь сервис будет использовать связку ключей.
...