Кто-нибудь управляет своей непрерывной интеграцией с TeamCity, FinalBuilder и Mercurial (Kiln)?[дубликат]
-
19-09-2019 - |
Вопрос
Возможный дубликат:
Стек непрерывной интеграции в 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);
Примечание: я не проверял этот код, но, надеюсь, он даст вам представление.