Кто-нибудь управляет своей непрерывной интеграцией с TeamCity, FinalBuilder и Mercurial (Kiln)?[дубликат]

StackOverflow https://stackoverflow.com/questions/2413504

Вопрос

Возможный дубликат:
Стек непрерывной интеграции в Windows с очередями Mercurial + Mercurial?

Если да, то как выглядит ваш процесс сборки?

Мне трудно (в основном из-за отсутствия опыта/понимания всех трех инструментов) заставить TeamCity запускать мои сценарии FinalBuilder.Прямо сейчас у меня есть FinalBuilder, управляющий всеми проверками системы управления версиями, а TeamCity в основном просто запускает сценарий FinalBuilder и считывает результаты теста NUnit, но он не работает из-за ошибок аутентификации при выполнении ртутных команд для печи.

Это было полезно?

Решение

Если вы установили клиент Kiln на компьютер, на котором работает сценарий FinalBuilder, у вас будет доступ к расширению Mercurial «kilnauth», которое должно решить эту проблему за вас.

Просто войдите на машину сборки как пользователь, который запускает сценарий FinalBuilder, и вручную выполните одну команду push или pull из репозитория Mercurial, который вы пытаетесь использовать, вам будет предложено пройти аутентификацию.Пройдите аутентификацию один раз, и расширения клиента Kiln запомнят эту аутентификацию для этого пользователя... и любые последующие запуски сценария FinalBuilder должны пройти аутентификацию без проблем.

Решает ли это проблему для вас?Это лучшее решение, поскольку оно не сохраняет имя пользователя или пароль на вашем компьютере.Очевидно, есть и другие возможности, например, изменить путь вашего Mercurial на использование формата http://{username}:{password}@{kiln url}... но это не так приятно и безопасно, как описанный выше метод.

Имеет ли это смысл?

Другие советы

Я ничего не знаю о Kiln, но я только начал работать в VSoft и работаю над действием Mercurial для следующей версии FinalBuilder.Надеюсь, что-то из этого поможет.

Вы проходите аутентификацию через SSH или SSL?Можете ли вы извлечь/переместить в репозиторий из командной строки?Практически все, что вы можете заставить работать из командной строки, должно быть возможно с FinalBuilder.

Чтобы пройти аутентификацию в BitBucket через SSH, я сделал следующее:

  • скачать puttygen и pageant
  • создайте новый ключ SSH в puttygen
  • добавить закрытый ключ в конкурс
  • добавить открытый ключ в BitBucket

Оттуда я могу успешно

hg push ssh://hg@bitbucket.org/user/repo

Обратите внимание: у меня также установлен TortoiseHG, а Mercurial использует TortoisePlink в качестве ssh-клиента.

Если вы используете SSL, вы можете сохранить комбинацию имени пользователя и пароля в действии FinalBuilder.Чтобы превратить поле TextEdit в поле пароля, измените PasswordChar собственность от #0 к *.Затем в ReadData событие, добавьте что-то вроде

Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));

и в WriteData событие, добавить

Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);

Когда вы добавляете Token свойство к вашему действию, отметьте галочкой Property is Hidden from Action Inspector и Property is Read Only in Action Inspector параметры.

Чтобы сгенерировать строку репозитория, вам нужно сделать что-то подобное в Action GetCommandLine событие:

var repo = Context.Properties.PropertyAsString("Repository");
var username = Context.Properties.PropertyAsString("Username");
var password = DecryptString(Context.Properties.PropertyAsString("Token"));
var repo = "ssh://" + username + ":" + password + "@" + repo;

CommandLine.AddArgument("push", repo, qtNone);

Примечание: я не проверял этот код, но, надеюсь, он даст вам представление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top