Обновление параметра уровня проекта на этапе сборки в TeamCity 10
В настоящее время я реализую (не знаю, подходит ли слово "реализация", но в любом случае) семантическое управление версиями в TeamCity. У меня есть системные параметры уровня проекта, в которых я храню части номера версии: system.major
, system.minor
, а также system.patch
, У меня есть две конфигурации сборки:
- Во-первых, мы называем это бета-версией, использую основные, второстепенные и исправления как есть и добавляем значение счетчика сборки к версии (т. Е. 1.0.0.X, где X - это число сборок беты).
- Во-вторых, мы называем его релизом, используем основной и вспомогательный (но не патч) как есть и добавляем значение счетчика сборки в качестве номера патча (т. Е. 1.0.Y, где Y - счетчик сборки релиза).
Мы хотим, чтобы наши версии увеличивались следующим образом:
- Запущена бета-версия: 1.0.0. 1
- Еще одна бета-версия: 1.0.0. 2
- Выпущена сборка релиза: 1.0. 1.0
- Еще одна бета-версия: 1.0.1. 3
Проблема в том, что мы хотим использовать счетчик сборки релиза в качестве номера патча и в бета- сборке, без какого-либо вмешательства человека. До сих пор я читал о людях, использующих информацию о сборке или внешний файл, отслеживаемый VCS, для сохранения текущей версии на последнем этапе сборки и анализа файла на первом этапе сборки каждой конфигурации сборки. Этот подход, хотя и кажется стандартным, не приветствуется менеджером проекта, поэтому я хочу избегать использования информации о сборке или другого файла, отслеживаемого VCS, для хранения информации о версии. Я попытался использовать шаг сборки сценария powershell в конфигурации выпуска, чтобы установить параметр patch с помощью:
Write-Host "##teamcity[setParameter name='system.patch' value='%build.counter%']"
пока, используя teamcity[setParameter...]
кажется, вступает в силу внутри работающей сборки и только на последовательных шагах сборки. Я хочу установить системные параметры в одной сборке (выпуске), а затем использовать их значение в другой конфигурации сборки (бета).
Есть ли прямой путь, который я не вижу? Если у вас есть подобный опыт, можете ли вы указать мне правильное направление?
1 ответ
Я выполняю нечто подобное, выполняя вызов API в шаге сборки через powershell. Может ли это работать для вас? Выполните запрос GET, чтобы найти текущий счетчик сборки выпуска, а затем обновите соответствующий параметр запросом PUT.