Настройка Deploy job для helm#

Подгтовка#

Перед началом работы над созданием Deploy Job в Jenkins необходимо:

  1. Выполнить подготовку окружения согласно разделу Подготовка окружения в Platform V DropApp

  2. Выполнить подготовку пререквизитов Platform V DropApp.

  3. Настроить репозитории для работы с Jenkins Deploy Job по инструкции раздела Подготовка репозиториев;

Первичная установка#

  1. (опционально) Создать и запустить сервисную джобу для первичного заполнения common и pipeline репозиториев, созданных раннее по п.3 раздела Подготовка данного документа.

  2. Пункт первый может быть пропущен, если common-репозиторий создать в соответствии с разделом Подготовка репозиториев, заполнив необходимые файлы, перечисленные в разделе Common-репозиторий.

Настройки job в Jenkins:#

  1. В Jenkins необходимо создать «Новый item», с произвольным названием (например: DeployJob) и типом pipeline:

jenkins-new-item

jenkins-add-item

  1. Настройки секции Pipeline.

    1. Необходимо выбрать: Pipeline script from SCM → SCM → Git.

    2. Указать SSH адрес:

      • До релизного pipeline репозитория в поле repository URL, например: ssh://git@dhost/run4c/pipeline.git.

      • До репозитория pipeline, созданного на этапе подготовки пререквизитов;

    3. В секции credentials выбираем ранее созданный credential для доступа по SSH.

    4. В поле Branch specifier указать ветку, например release/D-01.050.079, которая соответствует версии DOT.

    jenkins-pipeline

    1. В поле Script Path указать deploy-fpi.groovy.

    jenkins-pipeline2

  2. Настройка секции General –> Prepare an environment for the run –> Property Content

Ниже представлен пример настроек задачи Jenkins

NODE=omstadm-cd-01
ENVIR=devops
CE=ci_000
SUBDIVISION=***
CHANNEL=pvm
CONFIG_DIR_LIST=dev:dev,st3_da_dp01:st3_da_dp01
REPOCOMMONBRANCH=devops/ABYSS
SCRIPTS_GIT_URL=ssh://git@***.sw.***.space:7999/run4c
GIT_URL=ssh://git@***.sw.***.space:7999/pvmdevop
SEGMENT=***

Название параметра

Описание параметра

Обязательность

NODE

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

+

ENVIR

Название стенда. (Подготовка репозиториев)

+

CE

Идентификатор, участвующий в составлении имен репозиториев.
Значение по умолчанию: ci05122739

-

SUBDIVISION

Идентификатор, участвующий в составлении имен репозиториев.
Значение по умолчанию: efs

-

CHANNEL

Канал (Например, УКОФЛ - ukofl, УКОЮЛ - ukoul, Сотрудники - emp). (Подготовка репозиториев)

+

CONFIG_DIR_LIST

Директория конфигурации. При реконфигурации генерирует поле CONFIG_DIR в графическом интерфейсе job с возможность выбрать одну директорию в общем репозитории common для раскатки приложения. Формат заполнения: <название директории>:<название директории>, например b1:b1

+

REPOCOMMONBRANCH

Ветка common-репозитория, в которой хранятся основные параметры для конфигурирования джобы

+

SCRIPTS_GIT_URL

SSH-путь до проектной области с pipeline-репозиторием.
Для получения этого значения необходимо зайти в pipeline-репозиторий, созданный на этапе (Подготовка репозиториев) или существующий ci05122739_efs_pipeline (релизный репозиторий DOT); скопировать полный SSH путь.
В GIT_URL указать только часть пути, не содержащая название репозитория common или pipeline. Важно! указывать без слеша в конце пути. Пример: GIT_URL=ssh://git@host/pvmdevop

+

GIT_URL

SSH путь до проектной области (Подготовка репозиториев).
Для получения этого значения необходимо зайти в созданный репозиторий common или pipeline на стенде; скопировать полный SSH путь.
В GIT_URL указать только часть пути, не содержащая название репозитория common или pipeline. Важно! указывать без слеша в конце пути. Пример: GIT_URL=ssh://git@host/pvmdevop

+

SEGMENT

Описание сегмента сети (опциональный)

-

После настройки параметров требуется сохранить изменения.

Далее требуется выполнить реконфигурацию джобы.

Реконфигурация#

Выполнение данного playbook(s) приведет к автоматической настройке job и отображение параметров на странице «Собрать с параметрами» Jenkins. Требуется без параметров собрать job, нажав меню:

  • «Собрать сейчас» (если job еще ни разу не был запущен).

  • «Собрать с параметрами» (и НЕ выбираем параметры) → «Ок».

Stage_view

Теперь видны параметры при выборе меню «Собрать с параметрами»:

Assemble_parameters1

Assemble_parameters2

После конфигурации задачи Jenkins в блоке SUBSYSTEM появятся заданные функциональные приложения (в примере с георезервированным кластером):

Assemble_parameters3

Важное отличие PRIMARY и SECONDARY состоит в параметре customValuesMasks, который определяет список helm-конфигурации для каждого плеча.

Assemble_parameters4

Описание сценариев#

Имя playbook

Описание сценария

Результат выполнения

DB_UPDATE

Запуск liquibase скриптов для установки изменений на БД.

3 варианта установки обновлений на БД:

1. Через верификацию функционального приложения – useFpVerification:"true"
2. DryRun ( ) – требует включенного параметра sqlReport :"true"
3. Обычная установка на базу

FP_CONF_CHECK

Проверка конфигурационных файлов функционального приложения.

При включенном параметре sqlReport :"true": происходит генерация отчета liquibase для последующей установки функциональностью DB_UPDATE

Совместно с режимом DRY_RUN запускает тестовый прогон удаления ресурсов из Namespace (PURGE_PROJECT)

MIGRATION_FP_CONF

Миграция конфигурационных файлов функционального приложения.

Миграция конфигурационных файлов дистрибутива в репозиторий конфигураций функциональных приложений

HELM_DEPLOY

Установка helm релиза (команда helm upgrade -i...)

Установленный релиз на стенд

DEBUG

Отладка режима пакетного задания.

Расширенный вывод логов Ansible запуска задания, сборка Workspace в артефакт

DRY_RUN

Запуск тестового прогоно реального сценария (дополнительного выбранного к dry_run)

Если выбран только playbook DRY_RUN, то выполняется DryRun списка сценариев из playbooks_default указанный в файле distrib.yml в составе дистрибутива приложения.

Если выбраны сценарии развертывания + DRY_RUN, выполняется DryRun выбранных сценариев (для которых есть функционал DryRun).

Выведен подробной лог с результатом тестового прогона

PURGE_PROJECT

Удаление ресурсов в Namespace

Удаление ресурсов в Namespace