Автоматическое увеличение версии пакета appx после каждой сборки

Я ищу решение для автоматического увеличения версии пакета (не путать с версией сборки) после каждой сборки на сервере CI (в частности, Atlassian Bamboo). У каждого пакета appx есть версия, определенная в его файле манифеста (appxmanifest). Таким образом, чтобы увеличить версию, перед фиксацией необходимо отредактировать манифест. Я рассматриваю различные подходы к реализации этого. Первый вносит изменения в манифест и отправляет его обратно в репо.

  1. Начинает строить план (чтобы заблокировать номер сборки)
  2. Изменяет манифест, чтобы для ревизии был установлен текущий номер сборки.
  3. Отправляет изменения в SCM (в частности, в Atlassian Stash). Этот шаг не должен запускать следующую сборку.
  4. Продолжает сборку пакета (вызывает MSBuild, UT и другие задачи)

Минусы

  1. Приводит к неправильному рабочему процессу на Bamboo: checkout -> push -> build
  2. Каждая сборка делает новый коммит

Другой подход состоит в том, чтобы настроить хук Stash после получения, который изменит файл appxmanifest.

Минусы Сложно синхронизировать номер сборки с Bamboo.

Есть ли другой (более чистый и правильный) способ добиться этого?


person IUnknown    schedule 18.10.2014    source источник


Ответы (1)


бывший разработчик Stash здесь (не то, чтобы это имело значение),

Я бы настоятельно рекомендовал не проверять информацию о производных/версиях или файлы. Это вызовет у вас бесконечное количество проблем (некоторые из которых вы указали в своем вопросе).

Мой совет - сгенерируйте необходимую информацию о сборке. Я ничего не знаю об упаковке appx, но можете ли вы использовать заполнитель/свойство (например, это), которые можно разрешить в сборке Bamboo? Для наших сборок мы используем хэш git и отметку времени в качестве версии, а в прошлом я также использовал номер задания/сборки (хотя отметка времени лучше).

В качестве дополнительной пищи для размышлений: если эта версия appx важна для локального просмотра разработчиками, и становится трудно сопоставить ее с версией Git, вы также можете прикрепить тег/примечание Git к фиксации в Bamboo. Приятно то, что любой, кто получает данные из Git, может легко увидеть эти дополнительные метаданные, но это не приводит к дополнительным фиксациям для каждой сборки. Если версия appx должна быть основана на предыдущей версии, это позволяет сценариям сборки проверять предыдущую фиксацию и соответствующим образом повышать версию.

Надеюсь, это поможет.

person charleso    schedule 19.10.2014
comment
Спасибо за помощь. Мне удалось решить проблему, используя шаблон манифеста с заполнителями. Затем задача TemplateFile из проекта Задачи сообщества MSBuild получает значения из переменных среды во время сборки и создает appxmanifest. - person IUnknown; 21.10.2014