Сборка / выпуск VSTS из нескольких источников в виртуальные каталоги Azure

У моей команды есть веб-приложение служб приложений Azure, в котором мы размещаем три основных компонента:

  1. Наш основной сервер Node.js и API, который находится в корне
  2. Вторичный API, который находится в виртуальном каталоге
  3. Наше интерфейсное веб-приложение (также обслуживаемое сервером Node.js), которое находится в другом виртуальном каталоге.

Каждый из этих трех компонентов поддерживается в собственном репозитории git в VSTS. Кроме того, в веб-приложении есть три слота: dev, ppe и prod.

Мы пытаемся перенести наши процессы сборки из Azure в VSTS. Мы бы хотели сделать следующее:

  • Когда есть новая фиксация master в любом из трех репозиториев, создайте сборку разработчика и разверните ее непосредственно в соответствующем виртуальном каталоге в слоте dev.
  • Когда компонент готов к выпуску - будь то новая фиксация в специальной RELEASE ветке или запуск процесса выпуска вручную - создайте производственную сборку, разверните ее в ppe и, с одобрения пользователя, поменяйте местами слоты ppe и prod.

Сложность здесь заключается в том, что при развертывании любого компонента в ppe нам также необходимо развернуть последние выпущенные версии всех трех компонентов в ppe, поскольку в Azure нет возможности менять местами виртуальные каталоги независимо.

В настоящее время у меня есть следующее:

  • Процесс сборки для каждого из трех репозиториев, который запускается при фиксации master или RELEASE. Он создает как сборку для разработки, так и производственную сборку и публикует их.
  • Процесс выпуска разработчика, который запускается для любых новых сборок master в любом из трех репозиториев. Он берет последнюю сборку разработчика из master из всех трех репозиториев и развертывает их в соответствующие виртуальные каталоги в dev.
  • Процесс производственного выпуска, который запускается при любой новой сборке RELEASE в любом из трех репозиториев. Он берет последнюю производственную сборку из RELEASE из всех трех репозиториев, развертывает их в соответствующие виртуальные каталоги в ppe и, с одобрения пользователя, меняет местами ppe и prod.

Это работает, но кажется довольно неуклюжим, требует много потраченной впустую работы, и не похоже, что мы точно используем преимущества конвейера сборки / выпуска VSTS. Есть ли лучший или более приемлемый способ сделать это?




Ответы (1)


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

Что касается сборки, вы можете установить тег (ы) сборки для текущей ветки, вызвав ведение журнала команд через задачу PowerShell (##vso[build.addbuildtag]build tag)

Что касается сценария ppe, я рекомендую вам создать новое определение сборки CI только для ветки, связанной с ppe, и собрать все компоненты (получить другой исходный код, вызвав команду git clone через задачу командной строки или другие задачи (например, PowerShell)), а затем опубликовать результаты из них, после этого разверните их в соответствующие слоты и виртуальный каталог в выпуске.

person starian chen-MSFT    schedule 28.09.2017