Использование команд git на этапе сборки TeamCity

Один из моих проектов сборки TeamCity v7.0 основан на использовании diff между текущей веткой разработки и главной веткой для определения того, что нужно запустить. Я написал небольшой скрипт, который использует что-то вроде:

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

К сожалению, журнал сборки показывает, что git diff не работает. Когда я захожу в каталог buildAgent / work для этого проекта, я вижу, что нет .git папку, поэтому он не может выполнять требуемые операции git.

Я положил teamcity.git.use.local.mirrors=true в buildAgent.properties файл, как упомянуто в TW-15873, но, похоже, это никак не поможет.

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

3 ответа

Попробуйте изменить режим проверки VCS на "Всегда проверять файлы на агенте", как описано здесь. Это должно дать сценарию сборки доступ к папке.git.

@Майк Два ответ правильный, нужно настроить корень VCS для автоматического использования режима проверки на агенте, а не на сервере. В документации TC не упоминается, что этот обязательный параметр по умолчанию скрыт как "расширенный". Так вот картина того, что искать.

Расширенные настройки

К вашему сведению, моя конкретная ошибка шага решения VS2013 была от MSBuild, как показано ниже. Я использую последнюю версию TeamCity Enterprise 9.0 EAP (сборка 31963). [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//редактировать; Я не знал, как добавить это в комментарий.

Параметр teamcity.git.use.shallow.clone=false а также teamcity.git.fetchAllHeads=true может быть то, чего не хватает, по крайней мере, в последней версии TC.

Другие вопросы по тегам