Рубрики
Uncategorized

Использование Kentico 12 MVC с Azure Devops

Поддержание вашей команды и заинтересованных сторон вашего проекта актуальны с текущим состоянием проекта, является отличным способом усиления сотрудничества на протяжении всего проекта и сохранить вещи на пути. Помечено с Кентико, продолжается непрерывность, дежопта, лазурное.

Поддержание вашей команды и заинтересованных сторон вашего проекта актуальны с текущим состоянием проекта, является отличным способом усиления сотрудничества на протяжении всего проекта и сохранить вещи на пути. Использование Microsoft Azure DEVOPS с модулем непрерывного интеграции в Kentico 12 дает нам возможность автоматизировать регулярное развертывание на общий сервер сборки.

Существует множество статей об использовании непрерывной интеграции (CI) и непрерывного развертывания (CD), доступных в Интернете, который вы можете найти с быстрым поиском Google. Большинство статей касаются обновлений схемы базы данных и развертывание вашего кода в качестве быстрого запуска, оставив вас в качестве разработчика для работы по любым конкретным требованиям для вашего сценария. Как правило, платформы, такие как Kentico, требуют немного больше усилий, потому что база данных не только имеет схему для обновления, но и сама данных. Убедившись, что мы обновляем правильные данные, — это довольно большая сделка, понять это неправильно, и ваши идентификаторы документов были смещены, и у вас есть возможность удалить данные транзактичных данных или сделать неправильные записи для неправильных людей.

В Ridgeway мы в первую очередь сосредоточились на ручных развертывании в прошлом, используя пакеты экспорта Kentico и развертывания кода, чтобы мы точно знали, что мы развертываем в каждой точке. Как мы делаем это подробно в статье, которую я написал в прошлом году о Использование Kentico CI и Git, чтобы помочь с релизами Отказ Это хорошо сработало для нас, но он все еще был трудоемким для обновления сервера сборки и требует большего ручного вмешательства, чем нам понравилось. Поэтому мы отправились в путешествие, чтобы посмотреть, сможем ли мы автоматизировать этот сервер сборки, используя Кентако непрерывная интеграция модуль и Azure DevOps Отказ Это также тема, которую мне повезло, что мне повезло, что он сможет представить на связи на Kentico 2019 в Брно, Чехии.

Какой модуль непрерывного интеграции?

Модуль Kentico CI — это функция, которая была добавлена в лицензию Kentico EMS в версии 9 (yep — еще в ноябре 2015 года, если вы можете вспомнить это далеко назад!). У самых простых включение модуля CI означает, что любые изменения, которые вы делаете в Kentico, сериализуются в файлы XML, которые находятся в CMS \ app_data \ cirepository Отказ Инструмент CI может быть запущен к десессивию этих файлов в текущий экземпляр Kentico для применения любых изменений, которые были сделаны.

Что это дало нам, был простым способом для разработчиков работать над полностью изолированными средами со своей собственной базой данных, настроенную локально, поэтому им не пришлось ждать, пока их применяются, и нет задержки сети. Вытягивая последний код из репозитория источника и запустил инструмент CI, обновляет вашу местную БД, приведя вас в режиме онлайн с остальной частью команды. Мы использовали это в Ridgeway уже несколько лет сейчас, чтобы синхронизировать разработчиков в новых проектах, и мы узнали несколько советов и трюков по таким образом, например, как настроить, какие файлы будут сериализованы и насколько разные файлы могут быть легко создан вручную, если необходимо ускорить некоторые из общих рабочих мест в области развития.

Какова наша цель?

Целью состоит в том, чтобы настроить непрерывную интеграцию с использованием Microsoft Azure DEVOPS и модуля CENTICO CI для создания сайта сборки, который можно поделиться каждому вложенным в проект (желательно, не глядя на плечо разработчика). То, что мы хотим избегать развертывания файлов и артефактов на сайт сборки, которые не требуются для запуска веб-сайта, поэтому в этом случае мы говорим о выполненном исполняемости непрерывной интеграции и всеми файлами непрерывных интеграций, хранящихся в репозитории CI папка.

Мы хотим, чтобы это тогда запустим автоматически, когда мы подталкиваем наши изменения в нашу репозиторий исходного кода. Для хранилища исходного кода мы также собираемся использовать репозитории Microsoft Azure DEVOPS Причина, по которой мы выбрали Microsoft Azure DevOps, заключается в том, что это наряду с GitHub поддерживает одну функцию, которую мы собираемся использовать для перемещения некоторых артефактов из Репозиторий исходного кода прямо в выпускной трубопровод, который вы обычно не хотите публиковать.

Мы будем использовать решение Medio Clinic в качестве нашего исходного проекта, так как это используется в курсах обучения Kentico MVC. Я уже принял копию Medioclinic от GitHub и сделала немного домохозяйства, чтобы я знаю, что он готов опубликовать.

Чтобы обобщить то, что мы собираемся сделать:

  • Создайте медиколинное решение всякий раз, когда мы нажимаем на ветвь сборки
  • Инициализируйте базу данных (если она уже не готова к сайту Kentico)
  • Разверните наши услуги Azure App
  • Запустите модуль непрерывного интеграции Kentico

Создание сборки DevOps

Когда дело доходит до создания сборки в DevOps, у нас есть две части в сборку. Первый — фактический сам построенный трубопровод, который будет нести ответственность за создание собраний и выполнять все компиляцию. В типичном проекте в Ridgeway это также заботится о создании любых интерфейсных активов, использующих NPM так далее…… Второе, на что мы смотрим, — это выпускной трубопровод. Это работа о выпуске трубопровода, чтобы взять активы с трубопровода по сборке и публиковать те в нашу службу приложений Azure и гарантировать, что база данных обновлена.

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

Вместо того, чтобы пытаться переоценить этот конкретный трубопровод прямо сейчас, я создал ресурсы, которые нам нужны в Azure; Существует сервер SQL Database Server и Black Database, сервис приложений для сайта администратора Kentico и другое приложение для приложения MVC с клиентами. Трубопроводы сборки и выпуска затем позаботятся обо всем остальном.

Построить трубопровод

Из двух трубопроводов, которые мы используем, сборка, безусловно, самая простая. Все, что мы делаем, предпринимает стандартный шаблон ASP.NET и сделать несколько небольших модификаций, связанных с тем, как занимаются соединительными строками, просто чтобы упростить нашу работу. Как правило, соединительные строки будут управляться в конфигурации слота, но в этом случае я хочу, чтобы соединение ранее было так, чтобы его можно было использовать в нашем выпускном конвейере для инициализации базы данных, вставить лицензии и фактически запускать CI.

Ниже вы можете увидеть файл yaml, который мы используем для этой сборки:

Модифицированные настройки примечания в msbuild линия:

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

Освобождать трубопровод

Когда я впервые создал это, было доступно два варианта, которые были доступны при создании выпускного трубопровода. Одним из состоит в том, чтобы использовать интерфейс перетаскивания, а другой — использовать конвейеров сборки YAML, который сам запускается успешным завершением другого конвейера сборки. В этом примере я решил использовать интерфейс перетаскивания, потому что он дает лучшее визуальное представление о том, что мы пытаемся получить, хотя долгосрочный с помощью файла YAML очень предпочтительнее. Я разбиваю релиз-трубопровод на два отдельных этапа, первый этап будет заниматься выпуском применения введения и запустить kentico CI, а также инициализацию базы данных, второй этап должен касаться только с выпуском облицовочного веб-приложения.

Как вы можете видеть с диаграммы ниже, выпускной трубопровод принимает два набора артефактов. Первый набор является выходом из нашего конвейера сборки, это действует как триггер для выпускаемой трубопровода для выполнения, а также поставляя встроенные артефакты из конвейера сборки. Второй комплект артефакта является необработанное соединение с нашим исходным управлением. Эта опция доступна только в том случае, если вы используете репозитории Azure DEVOPS или GitHub (GitHub рассматривается как гражданин первого класса в рамках образования Azure). Целью этого второго набора — дать нам доступ к некоторым активам, которые не являются частью выхода сборки Visual Studio. В этом случае я специально говорю о папке репозитория CI и исполняемым исполняемым, который мы будем использовать для инициализации базы данных.

Как вы можете видеть с диаграммы, первый этап содержит восемь задач, тогда как второй этап требует только один. Восемь задач на первом этапе перечислены ниже:

Давайте поговорим через эти шаги немного деталь.

  • Первый шаг довольно пожелательный, мы собираемся принять вывод сборки и развернуть его в службу приложений Azure. Настройки для этого шага скажите мне, какую часть вывода из сборки я хочу, в этом случае Cmsapp.zip А также содержал конфигурацию для отправки этого до Azure.
  • Второй шаг немного интереснее; Это где мы инициализируем базу данных. Для этого мы создали сборку, которая предпринимает несколько настроек конфигурации и выполняет команды, которые Kentico обычно выполняют в новой установке. Эта команда ищет стандартные сценарии настроек Kentico и установит все основные таблицы и контент, необходимые для пустой установки Kentico. Я поставлю немного больше информации о том, как мы делаем это позже.
  • Как только у нас есть инициализированная база данных, нам нужно знать, что она не будет содержать лицензионные ключи для Kentico. Без лицензионных ключей мы не сможем определить, может ли модуль CI работать. Чтобы исправить это на данный момент, когда я создал простую задачу SQL в качестве 3-го шага, чтобы вставить лицензии, которые мне нужны для Kentico.
  • Четвертый шаг расстегните вывод компиляции приложений CMS из конвейера сборки. Это делается, чтобы помочь исполняемому исполняемому модулю CI. Без встроенных сборки CI не сможет работать правильно. В дополнение к тому, что этот ZIP-файл теперь также содержит функционирующий файл конфигурации, который сможет сообщить исполняемому файлу CI, где искать строку подключения к базе данных.
  • Следующие два шага, которые я использовал для извлечения информации от второго исходного оборудования Artefact Set, который мы создали в начале выпускного трубопровода. Файлы, которые мы собираемся скопировать, представляют собой непрерывный исполняемый файл интеграции, а также его конфигурацию и файлы репозитория CI. Они будут скопированы в расположение, которое было создано на предыдущем шаге. Таким образом, эта непрерывная исполняемая интеграция будет в конечном итоге в папке Bin и файлы репозитория непрерывных интеграций будут в конечном итоге в папке данных приложений. Теперь у нас есть все, что нам нужно, чтобы запустить постоянную интеграцию в пределах выпускного трубопровода.
  • Седьмой шаг — команда PowerShell, это команда, которая работает Непрерывная связь.exe. с установленным флагом восстановления. Одно можно отметить, что потому, что, поскольку у меня нет постоянной интеграции, в настоящее время включена в данный момент репозитория, восстанавливается на данный момент, поэтому ради эксперимента, я делаю здесь, есть довольно много информации, которую мы десертилизируем все Kentico сайт. В плохой день это занимает около сорока минут, чтобы бежать в моей среде. Сорок минут может показаться довольно долгое время, но если мы смотрим на ночную сборку, то нам не нужно так обеспокоены. Если вы хотите использовать это постоянно каждый раз, каждый раз, когда сделан коммит, тогда это сорок минут может представить вам больше вызов, и некоторые дополнительные усилия могут потребоваться создать для обеспечения непрерывной интеграции на сервере назначения. Очевидным недостатком этого является то, что есть влияние на производительность на вашем сервере сборки, так как люди пытались работать с ним, и данные сериализуются на диске.
  • Это приводит нас к последнему шагу на этом этапе, все это нужно сделать, это обновить доменные имена на сайте оed. Целью этого заключается в том, что мы запускаем весь трубопровод CI каждый раз, когда мы проходим через эту процедуру, что означает, что сама информация сайта также обновляется. После того, как сайт изначально настроен, мы могли бы изменить конфигурацию репозитории и исключить такие вещи, как сайт из модуля CI, означающий, что будущие выпуски трубопровода не будут обновлять сам запись сайта.

К тому времени, когда мы получаем здесь, у нас должен быть полнофункциональный веб-сайт для сайта администрирования Kentico, и все, что осталось, это запускать второй этап нашего выпускного конвейера для развертывания приложения MVC.

Настройка базы данных

Для того, чтобы инициализировать базу данных, мы собираемся использовать какой-то код, который поставляется с Kentico из коробки. Если вы когда-либо оказались в ситуации, когда вы впервые устанавливаете Kentico в пустой базе данных, вы увидите некоторые вывода из этого кода. Конкретно то, о чем мы говорим, это Cms.dataEngine. Sqlinstallationhelper. Installdatabase () Отказ

Мы передаем конфигурацию в этот файл, рассказывая ему, где найти файлы конфигурации и сценарии SQL:

Резюме

Теперь мы получили относительно простой трубопровод, который позволяет нам сохранить наш сервер сборки в курсе минимального вмешательства разработчика. Нам удалось придерживаться наших оригинальных целей списка, которые мы развернули только веб-приложение к серверу, мы не развернули любую из непрерывных интеграционных артефактов, но мы обновили веб-приложение с этими обновлениями данных непрерывной интеграции. Отказ У нас есть процесс выпуска, представленный следующей диаграммой.

Одна вещь, которую мы действительно должны принять к сведению здесь, так это то, что это только имеет дело с процессом приема нашей среды развития и перемещать его в сервер сборки. Если мы хотим принять это к следующей среде (например, UAT, постановка окружающей среды или, возможно, производство), это, вероятно, не сценарий, который вы хотите использовать. Фактически, документация по Kentico рекомендует, чтобы вы не использовали непрерывную интеграцию в производстве. Частично это причина производительности, но также у вас меньше контроля за содержанием, и есть лучшие инструменты для этого, например, модуль постановки контента.

То, что я надеюсь, что это предоставило, — это представление о том, как вы можете использовать Kentico 12 с Microsoft Azure DEVOPS, чтобы быстро выдвинуть последние усилия по разработке на сервер сборки, где ваши заинтересованные стороны и коллеги могут легко просматривать эти изменения.

Оригинал: «https://dev.to/mattnield/using-kentico-12-mvc-with-azure-devops-36dm»