Я работаю над процессом devops для мобильного проекта, проект имеет 3 цели развертывания:
- Xamarin Android app
- Xamarin iOS app
- Веб-приложение, развернутое в azure службе приложений
Исходный код хранится в Azure репозиториях devops, а конвейеры записываются в Azure Конвейеры Devops. Мы следим за Git рабочим процессом для этого проекта, что означает, что мы работаем над "ветвями компонентов", которые объединяются с ветвью разработки, и у нас также есть основная ветвь, которая в настоящее время содержит наш производственный код.
То, что я сделал до сих пор
Когда разработчик создает PR, и он объединяется для разработки ветки. это вызовет конвейер сборки, который я написал. В настоящее время конвейер сборки выполняет следующие действия:
- Установите необходимые сертификаты в агенте.
- Примените любое преобразование в коде - например, измените BundleID, имя значка приложения, номер версии и т. Д. c для сборки QA.
- Восстановление нативов в проекте
- Сборка и проект
- Скопируйте артефакты в папку.
- Отпустите артефакты в AppCenter для тестировщиков QA.
Вышеописанный процесс хорошо подходит для одностадийного развертывания. Но я бы хотел перейти на следующий уровень, представив конвейер выпуска для нескольких этапов: QA, Staging и Production, что означает, что я удалю шаг 6 из процесса сборки и добавлю его в новый конвейер выпуска. У меня небольшой психический блок, и я не могу найти ответы на некоторые из следующих вопросов:
Мои вопросы
- Каждый раз, когда мы Генерация сборки для этапа, нам нужно изменить различные переменные в приложении (Шаг 2). Как только артефакт готов в конвейере сборки, я не вижу способа изменить это. Так значит ли это, что для каждого отдельного этапа нам нужно продолжать строить проект для выполнения этих преобразований?
- Как только я применю конвейер выпуска, и если я смогу преобразовать код и автоматически сгенерировать выпуск для этапов, Я не вижу смысла в старой ветке master. Правильно ли я это сказал?