Запуск непрерывной интеграции Kentico в службы приложений Azure

У нас есть новый проект, в котором мы пытаемся использовать встроенную непрерывную интеграцию в Kentico для отслеживания изменений в шаблонах, типах страниц, преобразованиях и т. Д.

Нам удалось заставить это работать локально между двумя экземплярами базы данных Kentico, внося изменения в один, синхронизируя изменения через CI и затем восстанавливая их до второй базы данных, используя приложение непрерывной интеграции, которое находится в папке bin на сайте Kentico.,

Проблема, с которой мы сталкиваемся, заключается в развертывании наших изменений в наших средах разработки и жизни.

Наши сайты размещаются как службы приложений Azure, и мы внедряем их с помощью рабочих процессов создания и выпуска VSTS (Azure DevOps), однако, поскольку эти задачи выполняются в агенте, любой сценарий powershell, который мы пытаемся запустить для запуска приложения CI, завершается сбоем, потому что это не так. работает в контексте сайта / сервера.

Мой вопрос: кому-нибудь удалось успешно запустить Kentico CI в контексте службы приложений Azure? В качестве альтернативы, как я могу запустить сценарий powershell на сайте после развертывания?

1 ответ

Мы делаем, но не CI. ВСЦ + ГИТ. Мы храним виртуальные объекты в файловой системе и используем git для контроля версий. У нас есть собственная пользовательская библиотека, которая импортирует экспорт объектов Kentico (те, которые не контролируются Git). По сути, у нас есть файл json "Публикация манифеста", в котором мы указываем, какие объекты необходимо экспортировать (т. Е. Перемещать между средами).

Есть шаг от Microsoft "Powershell на целевых машинах", вы можете посмотреть на это.

PS Взгляните также на три способа управления данными в Kentico с помощью PowerShell

Разверните файлы CI в службе приложений Azure, а затем используйте задание Azure для запуска "ContinuousIntegration.exe"

Если вы поместите файл с именем KenticoCI.bat в каталог \App_Data\jobs\triggered\ContinuousIntegration - это автоматически создаст веб-задание, которое вы можете запустить:

KenticoCI.bat

cd D:\home\site\wwwroot
ren App_Offline.bak App_Offline.htm
rem # run Kentico CI Integraton
cd D:\home\site\wwwroot\bin
ContinuousIntegration.exe  -r

rem # Удаляет файл 'App_Offline.htm', чтобы вернуть сайт в режим онлайн. cd D:\home\site\wwwroot ren App_Offline.htm App_Offline.bak

Да, у меня это работает в Azure DevOps внутри самого конвейера выпуска. Это то, что мы сейчас развиваем как бизнес, в котором я работаю.

Ключевые шаги, чтобы заставить это работать для меня, заключались в следующем:

  1. Я не хочу развертывать ContinuousIntegration.exe или папки репозитория, поэтому мне нужно создать второй набор артефактов из системы управления версиями (насколько мне известно, на данный момент это возможно только с Azure Repos и GitHub).
  2. Разархивируйте пакет развертывания и скопируйте CMSпапку в рабочий каталог, здесь вы собираетесь запустить CI. Я сделал это потому, что мне нужны встроенные сборки.
  3. Из артефакта репо на шаге 1 скопируйте ContinuousIntegration.exe и папки репозитория CI в нужное место в распакованной рабочей папке.
  4. Убедитесь, что строка подключения действительно работает для БД в вашей разархивированной папке. При необходимости вы можете изменить параметры сборки VS в отношении того, как обрабатывается web.config.
  5. Отсюда вы сможете запускать CI в новой рабочей папке для вашей целевой базы данных.

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

Я собираюсь написать об этом более подробно, поэтому я поделюсь здесь, когда это сделаю.

Изменить:- Я наконец написал об этом более подробно: https://www.ridgeway.com/blog/web-development/using-kentico-12-mvc-with-azure-devops

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