Что нужно сделать
1.Подготовить србоки для трех текущих проектов.
2.Подготовить шаблон создания новой сборки приложения.
3.Подготовить шаблон создания новой сборки библиотеки.
Общие требования
- Текущий сервер сборки на Jenkins ver. 2.176.2 (2019-07-17).
- Можно использовать текущий сервер. Если он устарел, то можно подготовить новый на новой виртуальной машине. Рассматриваем возможность использования Gitlab CI\CD.
- Сборка должна выполняться под Windows: это ограничение идет от особенности сборки компилятора для прошивок.
- Все внесенные изменения в настройки всех сборок должны быть под системой контроля версий. Т.е. должна быть возможность посмотреть вносимые изменения и автора.
- Необходимо, чтобы сборочный сервер можно было легко развернуть в случае необходимости на другой виртуальной машине.
- Необходимо, чтобы была возможность управлять доступом к сборкам: редактированию, просмотру каждого билда индивидуально или по группам.
Взаимодействие с системой контроля версий исходников проекта
- В настоящий момент в качестве системы контроля версий используем Gitlab.
- Сервер сборки отправляет сообщение об успешной сборке на Gitlab, данное событие будет автоматически разрешать Merge request в ветку dev. При отсутствии данного подтверждения Merge request закрыть невозможно.
Этап сборки
- Сборка опционально запускается автоматически при создании ветки или нового коммита.
- Должна быть возможность выключения автоматического запуска индивидуально для каждой ветки.
Этап проведения модульного тестирования
- Для каждого проекта существует дополнительный зависимый проект, который запускает модульные тесты.
- Модульные тесты должны запускаться после успешной сборки артефактов проекта.
Правила формирования номера прошивки
Прошивки могут быть 3 типов:
- Feature branch
- Dev
- Release
Номер прошивки присваивается системой сборки автоматически в зависимости от типа ветки. При этом мажорное и минорное числа формируются по настройкам в билде. Например, для Мажорного числа 1 и минорного 0 будет формироваться следующий номер прошивки:
- 1.0.123-ADS-111
- 1.0.123-dev
- 1.0.123
Где 123 - это порядковый номер билда для данной ветки, ADS-111 - это обязательный префикс названия ветки в Gitlab, которое обязано начинаться с номера задачи, привязанной к Jira.
Если ветка не соответствует требования, то она не собирается.
Настройки билда
В настройках проекта сборки должны быть следующие параметры:
- Формат названия ветки должен: Фильтр на первые символы веток. Например, ADS-%d. Где число может принимать только десятичное положительное значение.
- Мажорное.Минорное числа прошивки. Например, 1.0. Данные параметры будут использоваться для проверки совместимости структур данных и форматов хранения. Этот механизм будет позволять контролировать апгрейд и даунгрейд.
- Включить или выключить проверку модульных тестов.
- Какие билд агенты использовать для сборки.
- Текущий билд агент для сборки: Данный параметр должен быть доступен при запуске билда.
- Генерация паспорта прошивки.
Правила хранения прошивок
- Все прошивки должны храниться в течение не менее 3 лет с момента билда в специальном надежном хранилище. В этом хранилище должна быть привязка к ветке, по которой были сделаны эти билды. Лог сборки.
- Все библиотеки должны быть расположены в репозитарии (Например, NuGet) для возможности подгрузки их в проект приложений.
- Для всех артефактов должна быть система публикации артефактов в надежное хранилище, где она будет храниться. Можно организовать непосредственно на самом билд агенте, но только нужно настроить бекапы.
- Для библиотеки добавляется этап выгрузки артефактов в NuGet.
Шаблоны сборки
Необходимо подготовить шаблоны сборки, которые будут облегчать подготовку новых билдов.
Шаблон создает сборку для следующих типов артефактов:
- приложение - прошивка тахографа
- библиотека - для интеграции в прошивку тахографа
Шаблон выполняет следующие действия:
- Запрашивает название проекта и формирует имя проекта:
- Для приложения формирует название: app-name
- Для приложения формирует название: lib-name
- Создает репозитарий в Gitlab с именем проекта.
- В проект подключается шаблон пустого приложения с правильным именем.
- Создается ветка dev.
- Устанавливается ветка для интеграции dev по умолчанию.
- По умолчанию в Gitlab на данный проект устанавливаются правила интеграции веток:
- Интеграция ветки в ветку dev возможна только менеджером проекта
- Интеграция возможна только после апрува от 3х участников проекта: один из них должен быть QA, developer-reviewer, сервера сборки.
- Создается подпроект с модульными тестами GoogleTest для Visual Studio.
- Создает новую сборку с привязкой к созданному Gitlab проекта.
- Для библиотеки добавляется этап выгрузки в NuGet.