Пересборка продукта#

В состав дистрибутива компонента DCGN можно при сброке добавить образы контейнеров и дополнительные шрифты с помощью утилиты Solution Merger Job, которая входит в поставку компонента Delivery Tools (DTDS) продукта Platform V DevOps Tools (DOT).

Рекомендации по наполнению продукта зависимостями при сборке с помощью Solution Merger Job#

Образы контейнеров не входят в состав дистрибутива компонента DCGN. Базовые образы и образы сайдкаров необходимо указывать при сборке продукта, используя Solution Merger Job. Перед запуском инструмента дополнения продукта зависимостями в конфигурации необходимо указать, какие базовые образы следует использовать вместо образов, указанных в Dockerfile по умолчанию.

Важно

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

Базовый образ#

Рекомендуемый стек:

  1. Альт 8 СП/Platform V SberLinux OS Server.

  2. OpenJDK.

  3. Пакет для управления шрифтами «fontconfig».

Альтернативный (опциональный) стек:

  1. Red Hat Enterprise Linux

  2. OracleJDK.

  3. Пакет для управления шрифтами «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'                                                                      # фаза этапа