Автоматическое управление версиями с помощью agvtool

Xcode 11 изменил способ обработки версий.

До сих пор у меня было две цели, Dev & Prod, каждая с отдельной версией. Версия Prod будет полностью ручной, Dev будет автоматизированной:

  • Во время сборки запускался скрипт, который затем извлекал теги git. Один тег будет содержать информацию о последней версии Dev. Если он новее, он обновит версию внутри Info.plist только для цели Dev.
  • Когда Dev будет развернут с использованием сценария (создать ipa, отказаться от внутреннего распространения, загрузить), версия сборки будет увеличена. Затем будет обновлен удаленный тег, содержащий информацию о версии.

Таким образом, каждая версия для разработчиков будет автоматически синхронизироваться, и управление несколькими сборками для разработчиков станет проще. Prod будет обновляться относительно нечасто, поэтому им можно будет управлять вручную.

Однако в Xcode 11, когда версия (или сборка) обновляется на вкладке "Общие", записи в Info.plist заменены на $(CURRENT_PROJECT_VERSION) а также $(MARKETING_VERSION) а также Current Project Version а также Marketing Version вместо этого используется вкладка настроек сборки.

Пока я бы использовал PlistBuddy чтобы читать и обновлять версии внутри Info.plist, но из того, что теперь понимаю, мне пришлось бы использовать agvtool. Однако есть две проблемы:

  • Если он выполняется как фаза запуска сценария, это приводит к отмене процесса сборки
  • Он не может обрабатывать отдельные версии для двух целей (поэтому я не могу просто автоматически управлять Dev, оставляя Prod в покое)

Я знаю, что теоретически все еще могу использовать Info.plist для управления версиями, но в тот момент, когда кто-то изменит версию вручную на вкладке "Общие", все будет испорчено (по опыту я знаю, что это произойдет).

У меня два вопроса:

  • Правильно ли я понимаю процесс?
  • Может по-прежнему иметь систему управления версиями, использующую agvtool похоже на то, что у меня было раньше?

0 ответов

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