Как я могу переопределить название ветки <default> в TeamCity 7.1 с помощью поддержки разветвления Git?
У меня есть ветки функций построения CI из Github и создания/упаковки их в локальную папку, используя соглашение об именах папок на основе проекта, номера ветвей и сборки.
Для названных ветвей (feature1, feature2) это отлично работает.
Проблема в том, что когда я выполняю фиксацию для мастера, TeamCity предоставляет команду teamcity.build.branch как <default>
- это означает, что когда шаг сборки расширяется
E:\Packages\MyProject\%teamcity.build.branch%\
он заканчивается с E:\Packages\MyProject\<default>
- который затем разбивает шаг сборки, потому что это не допустимый путь к Windows.
Я вижу имя ведущей ветки в полностью квалифицированном параметре сборки:
teamcity.build.branch <default>
teamcity.build.checkoutDir C:\TeamCity\BuildAgents\agent-mulder\work\2151838a7933464d
teamcity.build.default.checkoutDir 2151838a7933464d
teamcity.build.id 16347
teamcity.build.vcs.branch.github_myproject refs/heads/master
но в идеале мне нужно получить master как teamcity.build.branch для использования в моих шагах сборки.
Могу ли я преобразовать параметр во время выполнения? Переопределить поведение? Я даже пытался установить имя ветки VCS в DO_NOT_USE в надежде, что "master" больше не будет соответствовать стандарту - но это тоже не работает.
Ответы
Ответ 1
В teamcity 7 его просто% vcsroot.branch%
который возвращается.
В моем случае у меня есть
%MajorVersion%.%MinorVersion%.%PatchVersion%-%vcsroot.branch%
Все они заданы в параметрах построения.
Формат чисел -% BuildFormatSemVer%, который находится выше и. {0}
%BuildFormatSemVer%.{0}
Что возвращает
#1.0.0-develop.4
Ответ 2
Не идеально, но я смог обойти его, создав новую ветвь в git с именем "teamcity" и установив ее как ветку по умолчанию в TeamCity, кажется, что она действительно существует, поскольку она работает когда я создал ветку, но не сделал, когда вы только что ввели поддельное имя.
Надеюсь, они на самом деле исправит это, потому что это определенно взлом.
Ответ 3
Мы столкнулись с этой проблемой несколько раз при создании конвейеров. Это наиболее заметно при попытке автоматически создавать ветки функций и выпуска, используя рабочий процесс Gitflow. То, что мы смогли сделать, это использовать teamcity.build.vcs.branch.github_myproject
и регулярное выражение в sed
для дезинфекции строки всякий раз, когда мы хотим ее использовать. Это главным образом для артефактов водяных знаков для целей отладки.
Более серьезная проблема, по крайней мере для нас, заключается в том, что версия TeamCity 7.1.1 не автоматически запускает сборки зависимостей для всего, что не является сборкой по умолчанию в корне VCS. Очевидно, что это огромная точка боли, так как теперь нам нужно щелкнуть вручную в инструменте. Мы еще не выяснили, как можно обойти это, кроме крючков в git, которые используют HTTP API для вызова на правильный шаг сборки.
Ответ 4
Я не знаю, было ли это ранее ответили или больше актуально.
В TeamCity 10.0.2 создайте настраиваемый параметр, например% Git.Reference%. Если вам требуется pull (или push) от TC до git, установите для этого значение "ref/head/Dev" или "ref/Head/yourbranch". Используйте это в своей исходной ссылке VCS.