Пересборка продукта#
В состав дистрибутива компонента DCGN можно при сброке добавить образы контейнеров и дополнительные шрифты с помощью утилиты Solution Merger Job, которая входит в поставку компонента Delivery Tools (DTDS) продукта Platform V DevOps Tools (DOT).
Рекомендации по наполнению продукта зависимостями при сборке с помощью Solution Merger Job#
Образы контейнеров не входят в состав дистрибутива компонента DCGN. Базовые образы и образы сайдкаров необходимо указывать при сборке продукта, используя Solution Merger Job. Перед запуском инструмента дополнения продукта зависимостями в конфигурации необходимо указать, какие базовые образы следует использовать вместо образов, указанных в Dockerfile по умолчанию.
Важно
Образы определяются по правилам инсталляции, в которую будет установлен собранный продукт.
Базовый образ#
Рекомендуемый стек:
Альт 8 СП/Platform V SberLinux OS Server.
OpenJDK.
Пакет для управления шрифтами «fontconfig».
Альтернативный (опциональный) стек:
Red Hat Enterprise Linux
OracleJDK.
Пакет для управления шрифтами «fontconfig».
Пример из merger.yml
base_image_mapping: # маппинг базовых docker образов - from: .*openjdk11.* to: <укажите базовый образ необходимый для инсталляции> # пример nexus_host/repository/base/rhel7openjdk11:7.6-252.1561619826-86
Образы сайдкаров контейнеров#
В конфигурации развертывания DCGN присутствуют ссылки на образы сайдкаров, Dockerfile которых отсутствует в дистрибутиве продукта (образы технологических сервисов, поставляемых в других платформенных продуктах), поэтому в конфигурации Solution Merger Job следует явно указать, какие хеши образов использовать для таких сайдкаров.
Необходимо указывать образы сайдкаров, которые соответствуют версиям программных компонентов, указанных в разделе Платформенные зависимости.
Пример из merger.yml
image_link_mapping: # маппинг ссылок на образы (применяется, чтобы указать актуальные ссылки на образы sidecar контейнеров) # IGEG (Istio SE) ":.+proxyv2@sha256:[0-9a-f]{64}": ": <укажите образ необходимый для инсталляции>" # пример nexus_host/repository/synapse_security/istio/proxyv2@sha256:cdd4 # OTTS, если необходима интеграция с One-Time Password (OTP) / OTT ":.+ott-client-api@sha256:[0-9a-f]{64}": ": <укажите образ необходимый для инсталляции>" # пример nexus_host/repository/ott-client-api@sha256:764 # LOGA fluent-bit ":.+fluent-bit@sha256:[0-9a-f]{64}": ": <укажите образ необходимый для инсталляции>" # пример nexus_host/repository/ulogger/fluent-bit@sha256:04d
Добавление дополнительных шрифтов с помощью Solution Merger Job#
Дополнительные шрифты могут быть добавлены в итоговый дистрибутив конфигурации DCGN с использованием функциональности точек расширения Solution Merger Job.
Точка расширения перед этапом «Упаковка Solution» должна добавить необходимые шрифты в директорию package/conf/files/fonts дистрибутива конфигурации DCGN, при необходимости изменить значения параметров в конфигурационном файле.
Пример bash-скрипта для добавления шрифтов и переопределения параметров в дистрибутиве конфигурации:
#!/bin/bash
# Директория, в которой находится bash-скрипт
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd -P)
# Рабочее пространство
WORKSPACE=${WORKSPACE:-"$SCRIPT_DIR"}
# Директория, в которую скачивается дистрибутив solution
SOLUTION_DIR=${SOLUTION_DIR:-"$WORKSPACE/solution"}
# Маска дистрибутива DCGN
DISTRIB_MASK=${DISTRIB_MASK:-"dcgn-cfg-*"}
# Признак необходимости кодирования шрифтов в base64
ENCODE_TO_BASE64=${ENCODE_TO_BASE64:-"false"}
# Директория, в которой будут расположены добавляемые шрифты
FONTS_DIR=${FONTS_DIR:-"fonts"}
# Файл конфигурации с переопределенными значениями параметров
PARAMS_FILENAME=${PARAMS_FILENAME:-"dcgn-font-config.conf"}
# Целевая директория, в которую будут скопированы файлы шрифтов, package/conf/<...>
TARGET_FONTS_DIR=${TARGET_FONTS_DIR:-"files/fonts"}
# Целевое имя файла для замены исходных значений параметров
TARGET_CONF_FILENAME=${TARGET_CONF_FILENAME:-"config/parameters/dcgn.docgen-service.conf"}
# поиск директорий дистрибутива конфигураций
config_dirs=($(find "$SOLUTION_DIR" -type d -iname "$DISTRIB_MASK"))
for config_dir in "${config_dirs[@]}"; do
# создание директории
mkdir -p "$config_dir/package/conf/$TARGET_FONTS_DIR"
# копирование шрифтов в созданную директорию
cp -a "$SCRIPT_DIR/$FONTS_DIR/." "$config_dir/package/conf/$TARGET_FONTS_DIR"
# кодирование файлов в base64, если требуется
if [ "$ENCODE_TO_BASE64" = true ]; then
find "$config_dir/package/conf/$TARGET_FONTS_DIR" -type f -exec bash -c 'base64 -w 0 $0 > $0.base64 && rm -rf $0' {} \;
fi
sed_script=""
# подготовка sed скрипта
while IFS= read -r line || [[ -n "$line" ]]; do
param_key=${line%%=*}
param_value=${line#*=}
sed_script+="s#$param_key=(.*)#$param_key=$param_value#g;"
# если целевой файл yaml
sed_script+="s#$param_key:(.*)#$param_key: \"$param_value\"#g;"
done < <(grep -E '^([a-zA-Z0-9_.-]+)=(.+)$' "$SCRIPT_DIR/$PARAMS_FILENAME")
# переопределение параметров в файле
sed -i -r "$sed_script" "$config_dir/package/conf/$TARGET_CONF_FILENAME"
done
Пример файла конфигурации с переопределенными значениями параметров, который используется в bash-скрипте (переменная PARAMS_FILENAME):
# для конфигурации поставляемой в окружения: Platform V Backend и Platform V Frontend Std
dcgn.docgen-service.dcgn.customFonts.enabled=<значение параметра>
dcgn.docgen-service.dcgn.customFonts.lookup.fonts.in.repo=<значение параметра>
dcgn.docgen-service.dcgn.customFonts.fineTune.enabled=<значение параметра>
dcgn.docgen-service.dcgn.customFonts.fineTune.fontFamilies=<значение параметра>
dcgn.docgen-service.dcgn.customFonts.fineTune.fontFilesPaths=<значение параметра>
# для конфигурации, поставляемой в окружение Platform V Frontend High Load
dcgn_custom_fonts_enabled=<значение параметра>
dcgn_custom_fonts_lookup_fonts_in_repo=<значение параметра>
dcgn_custom_fonts_fine_tune_enabled=<значение параметра>
dcgn_custom_fonts_fine_tune_fontFamilies=<значение параметра>
dcgn_custom_fonts_fine_tune_fontFilesPaths=<значение параметра>
Наименования параметров указаны в качестве примера, состав и описание параметров указаны в разделе «Конфигурация DCGN».
Файлы точки расширения могут быть расположены в том же месте, что и файл merger.yml, используемый для конфигурации утилиты Solution Merger Job, или находиться в другом репозитории.
Пример файла конфигурации Solution Merger Job:
# Конфигурация Solution Merger
# ... параметры
# Подключение точек расширения
extensions:
# пример конфигурации для точки расширения, которая находится в другом репозитории
- name: <name> # имя точки расширения
repo: <repo_url> # URL репозитория, в котором находится файл с точкой расширения
branch: <REPO_BRANCH> # ветка репозитория, где находится файл с точкой расширения
script_name: <bash-script-path.sh> # файл точки расширения
stage: 'Unpack_solution' # этап, на котором включается точка расширения
phase: 'after' # фаза этапа
creds: <jenkins_cred_id> # идентификатор учетных данных jenkins, используемый для доступа к репозиторию
# пример указания переменных окружения, которые используются в bash-скрипте для конфигурации, поставляемой в окружение Platform V Frontend High Load
# переопределение маски дистрибутива
DISTRIB_MASK: "*dcgn-cfg-*"
# переопределение целевого файла
TARGET_CONF_FILENAME: custom_property.conf.yml
# пример конфигурации для точки расширения, которая находится в репозитории с текущей конфигурацией
# минимальная версия Solution Merger Job – 1.6.2-2 для использования этого способа
- cmd:
- "chmod +x $WORKSPACE/<bash-script-path.sh> && $WORKSPACE/<bash-script-path.sh>" # команда запуска bash-скрипта
stage: 'Unpack_solution' # этап, на котором включается точка расширения
phase: 'after' # фаза этапа