TeamCity + HG.Только тянуть (толкать?) Прохождение билдов - PullRequest
1 голос
/ 10 декабря 2010

Похоже, с популярностью непрерывной интеграции, это должно быть кусок пирога, но я в замешательстве. Я настраиваю TeamCity с HG. Я хочу иметь возможность отправлять наборы изменений в репозиторий, который TeamCity наблюдает и запускает на основе изменений. Это просто.

Далее, если сборка прошла, я хочу, чтобы этот набор изменений был перенесен в "чистый" репозиторий ... который содержит только передаваемые наборы изменений. Должно быть легко, но ...

TeamCity 6 поддерживает несколько этапов сборки, и если какой-либо шаг завершится неудачно, остальные не запустятся. Моя мысль заключалась в том, чтобы поставить в конце этап сборки, который выполняет тягу (или, возможно, толчок?), Чтобы передать проходящий набор изменений в чистый репозиторий.

Я пытаюсь использовать PsExec для запуска hg на коробке с репозиториями.

Если я попытаюсь запустить просто "hg pull", он не сможет найти hg.exe, даже если он указан в пути и я использовал флаг -w.

Я попытался поместить файл .bat в чистый репозиторий, который принимает параметр ревизии, и он работает нормально ... локально. Когда я пытаюсь запустить файл .bat удаленно (используя PsExec), он все работает нормально, но пытается запустить его на агенте сборки. Даже если я установлю аргумент -w, он запускает там файл .bat, но пытается запустить содержимое в окне агента сборки.

Я просто ухожу? Похоже, это довольно очевидная вещь, так что либо мои навыки в Google ослабевают, либо никто не думает, что об этом стоит писать. В любом случае, я застрял в земле SVN, пытаясь выбраться, поэтому я был бы признателен за помощь!

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Вместо того, чтобы запустить команду напрямую, вы пробовали запустить ее под оболочкой? Это обеспечит получение ожидаемых переменных среды. Если вы не используете командную оболочку, она выполнит команду напрямую без настройки среды, поэтому вам придется полностью указать путь к исполняемому файлу hg.

Попробуйте использовать командную строку для psexec, например: psexec c:\windows\system32\cmd.exe /c hg.exe

Конечно, добавив имя машины и подкоманду hg.

0 голосов
/ 13 февраля 2011

Добавьте следующие строки в свой профиль powershell:

function hg {
    cmd /c hg.exe $args
}

Если он не распознает hg.exe, вам может потребоваться добавить его в свой путь:

$env:Path = $env:Path + ";C:\Program Files\TortoisHG\";

(Вы можете просто ввести notepad $profile в командной строке. Он откроет файл для редактирования в Блокноте. Скопируйте и вставьте эту строку, а затем сохраните, выйдите.)

(см. Синтаксис псевдонима PowerShell длязапустить встроенную функцию cmd.exe? )

...