Установка параметров сборки из внешнего файла в TeamCity

В настоящее время я устанавливаю версию сборки для всех своих сборок C # с помощью TeamCity AssemblyInfo Patcher. Я выбрал схему версий «Major.Minor.% Build.number% .0». Это отлично работает, когда я определяю Major и Minor числа в TeamCity, но в идеале я хотел бы, чтобы они уже были определены в моем файле AssemblyInfo.cs и чтобы TeamCity устанавливала только значение для номера сборки. Это возможно?

Я вижу одно решение - отказаться от использования AssemblyInfo Patcher и использовать мой собственный скрипт обновления версии, но это кажется жестким.


person Bruno Denuit-Wojcik    schedule 04.01.2016    source источник


Ответы (1)


Вы можете определить файл параметров который вы проверяете в системе контроля версий, а затем обновляете схему до %system.major_version%.%system.minor_version%.%build_number%.0. Затем вы можете продолжать использовать AssemblyInfo Patcher, но исправлять все на основе значений в файле props.

Просто поместите следующее в файл с именем teamcity.default.properties в корне вашего проекта:

 system.major_version=3
 system.minor_version=15

В результате будет получен номер сборки 3.15.1234.0 для сборки №1234.

person Tomas Aschan    schedule 04.01.2016
comment
Я не мог заставить это работать. TeamCity жалуется, что у меня нет совместимого агента для запуска моей сборки, потому что major_version и minor_version не определены. Я даже попытался предварительно определить параметры, а затем принудительно выполнить синхронизацию с моим корнем GitHub, но безрезультатно. Нужно ли мне создавать агент, специально предназначенный для этого конкретного корня vcs? - person Bruno Denuit-Wojcik; 04.01.2016
comment
Ваш файл называется teamcity.default.properties? - person sferencik; 04.01.2016
comment
Я заставил его работать! Путем определения моих параметров как системных параметров (префикс имен параметров с помощью «система» везде, где они упоминаются). Раньше я этого не делал, а для TeamCity требовались параметры конфигурации. - person Bruno Denuit-Wojcik; 04.01.2016
comment
@ BrunoDenuit-Wojcik: Рад, что у вас все получилось! :) Я обновил ответ, чтобы отразить, что (я думаю) вы сделали, чтобы собрать все воедино - отражает ли текущая версия ответа ваше решение? Если нет, внесите правку в ответ, чтобы исправить это, чтобы будущие зрители получили что-то, что сработает с первой попытки :) - person Tomas Aschan; 05.01.2016
comment
@TomasLycken Я сделал одно дополнительное редактирование (добавив слово «система» к объявлениям параметров в файле). - person Bruno Denuit-Wojcik; 06.01.2016
comment
Привет, я обнаружил, что, следуя этому ответу, teamcity не может выделить агент сборки, пока я явно не добавлю параметры в конфигурацию сборки. Вам приходилось это делать? Как только я это сделал, средство исправления информации о сборке просто использовало пустое значение по умолчанию, а не брало его из файла teamcity.default.properties. К сожалению, правильное значение появилось в разделе «Параметры» журнала сборки, что говорит о том, что я почти прав. Teamcity v9.1.5, кстати, очень ценю любые советы. - person OlduwanSteve; 04.02.2016
comment
Как заметил OlduwanSteve, добавление системных параметров удовлетворяет агента, но, похоже, не читает мой файл свойств. Эта ссылка на сайте JetBrains (confluence.jetbrains.com / display / TCD9 /) указывает на установку правила проверки, чтобы убедиться, что файл включен в рабочий каталог сборки, но я не могу найти пример того, каким должно быть правило. В настоящее время у меня нет правил проверки и я не указываю конкретный рабочий каталог сборки, поэтому я ожидаю, что файл в корне моего решения должен появиться в правильном месте. - person Thierry; 05.10.2016
comment
У кого-нибудь это еще работает? Я создал файл teamcity.default.properties, и этот файл доступен в корне исходного кода. Однако переменная release_number, определенная как release_number=3.3.0 в файле, не читается. Как и другим, мне пришлось вручную создать параметр в определении сборки, иначе он становится несовместимым с агентом, однако это значение никогда не заменяется на значение в teamcity.default.properties файле. - person Juzzbott; 03.05.2017