SharePoint CI/CD

Настройка CI/CD под SharePoint на одном примере.

Итак, для начала определимся со схемой доставки изменений на сервера. Посмотрим на картинку

Основные моменты:

  • У нас есть ветка Master, из которой  создаем каждые 2 недели (время итерации) новую ветку dev.
  • В течении итерации чекиним в ветку Dev разные доработки ( в этот момент нужно все устанавливать на Test сервер чтобы провести тесты)
  • В конце итерации все чекины из Dev ветки сливаются в Master (в этот момент нужно все устанавливать на Prod сервер)
  • Снова создается новая ветка Dev N+1

Сразу скажу что это базовая схема, в каждой компании может она меняться, но сути это не поменяет.

Итак, чтобы автоматизировать этот процесс, посмотрим как это происходит на схеме:

Основные моменты:

  • Вы работаете на Dev Сервере
  • Новую доработку вы чекините в TFS
  • Срабатывает триггер который запускает задачу для агента (возможно ручной запуск)
  • Agent собирает проект, и устанавливает на указанный Test/Prod сервер.

Шаг 1. Создаем очередь для агента

У вас может быть несколько build серверов. Пулы собирают эти сервера в один поток. Через кнопку "Создать очередь" вы сможете создать новые пул.

После создания очереди, вам нужно скачать агента (рисунок 1, кнопка "Скачать агент")

Агент, это консольное приложение (ниже рисунок)

Его нужно скопировать и запустить на Build Сервере. Давайте определим что такое Build сервер. Build Сервером может быть любая машина, как отдельно выделенная так и ваша dev машина. В нашем случае важно чтобы там были установлены SharePoint Assemblies (иначе агент не сможет скомпилировать проект) . Задача Build сервера собирать проект. При первом запуске нужно запускать "Config.cmd" где нужно будет ввести параметры (запуск в виде консоли или в виде windows сервиса.. и тд). Далее запускается "Run.cmd" (ниже рисунок)

Агент настроен и запущен.

Шаг 2. Создание определений сборок

Как вы видели на первой схеме, у нас работают 2 сборки:

  1. Сборка и доставка на ТЕСТ
  2. Сборка и доставка на ПРОД

Чем они могут отличаться? В моем примере

  • на тест идет DEBUG сборка, на ПРОД RELEASE
  • на тест wsp пакеты разворачиваются, на ПРОД этот шаг отключен, установка в ручную. (причины опишу ниже)

В примере ниже мы рассмотрим CI/CD для теста. Через кнопку "+ Создать" вы сможете настроить определение сборки. (Рисунок ниже)

Элемент Процесс (Рисунок выше)

  1. Задаем имя
  2. указываем очередь агентов
  3. устанавливаем параметр Debug

Элемент Получить исходники  (Рисунок выше)

  1. Указываем источник
  2. Ветку устанавливаем Тестовую, пока это не важно, далее можно будет перенастраивать.
  3. Параметр "Очистить"
  4. Параметр "Сообщить"

Элемент Этап 1. На данном этапе добавляются под-шаги. (Рисунок выше)

Элемент Сборка решения.(Рисунок выше)

  1. Указываем проект
  2. MSBUILD 15,0
  3. Архитектура х64
  4. Конфигурация Debug
  5. Аргументы /p:IsPackaging=true

Элемент Копировать файлы (Рисунок выше)

На рисунке (выше) видны все настройки. Отмечу только что на данном шаге агент будет искать все WSP пакеты и копировать их на тестовый сервер по сетевому пути.

Этап "Выполнить PowerShell"  (Рисунок выше)

На этом шаге происходит выполнение ps скрипта по установке wsp пакетов на удаленном (Test) сервере. Тут понадобится логин и пароль фарм учетки соответсвующей фермы и файл TFSUpdateFunctions.ps1 (9,72 kb) Отмечу что это лишь пример (только обновление пакетов), вы можете его менять под свои нужды. Запуск сценариев на удаленной машине имеет ограничение, поэтому при написании скрипта ждите трудностей.

Ниже рисунок "Переменные" (Рисунок ниже)

Вкладка "Триггеры" (Рисунок ниже)

Если триггер включен, то при любом чекине в ветку автоматически начнется запуск сборки и выполнение всех шагов. Если триггер отключен, то эту сборку можно будет запускать в ручную в любое удобное вам время. Мы в своей практике использовали и первое и второе. Но в какой то момент чекинов стало много, так что сборка просто не успевала все устанавливать (каждая установка минимум пол часа, а в это время тестовый сервер не доступен) 

Шаг 3. Тестовый запуск

Через контекстное меню можно запустить сборку и проверить работу. (Рисунок выше)

 

На этом в принципе все.

Все вопросы и обсуждение в группе SharePoint (Telegram) https://t.me/sharepoint_ru

Спасибо.

Добавить комментарий

Loading