Пользовательские скрипты
Важно
Функциональность доступна только в серверной версии ТестОпс.
ТестОпс позволяет встраивать в свой интерфейс пользовательские скрипты (например, счетчики аналитики или системы мониторинга). Скрипты добавляются в конфигурационных файлах инстанса и не требуют изменения исходного кода.
Скрипты выполняются для всех пользователей при открытии ТестОпс в браузере. ТестОпс не передает во встроенный код данные из приложения.
Внимание
Используйте только доверенный код вашей организации. Некорректный или вредоносный скрипт может нарушить работу интерфейса ТестОпс для всех пользователей инстанса.
Принцип встраивания пользовательского скрипта
При запуске инстанса скрипт встраивается в виде HTML-фрагмента в главный файл интерфейса ТестОпс — index.html.
Скрипт можно добавлять в одно из двух мест файла:
- в начало секции
<head>— для ранней инициализации (например, чтобы отправлять данные о просмотре страницы в SPA-приложениеSPA-приложение — веб-приложение, в котором интерфейс обновляется без перезагрузки страницы в браузере); - в начало секции
<body>— для кода, который должен выполняться до загрузки основного приложения.
Для каждого из этих мест можно указать полный код скрипта через переменные CUSTOM_HEAD_SCRIPT и CUSTOM_BODY_SCRIPT или добавить путь к файлу с этим скриптом через переменные CUSTOM_HEAD_SCRIPT_PATH и CUSTOM_BODY_SCRIPT_PATH. Если используются оба варианта, приоритет имеет переменная вида <...>_SCRIPT_PATH — скрипт загружается только из файла по указанному пути.
Добавление пользовательского скрипта
Добавление пользовательского скрипта через переменную CUSTOM_HEAD_SCRIPT или CUSTOM_BODY_SCRIPT
В файле values.yaml:
Добавьте нужную переменную в секцию
env.open(или в секцию, где задаются переменные окружения сервиса testops):CUSTOM_HEAD_SCRIPT— для добавления скрипта в начало секции<head>;CUSTOM_BODY_SCRIPT— для добавления скрипта в начало секции<body>.
В указанной переменной введите код скрипта полностью, включая теги
<script>и</script>, например:yamlenv: open: CUSTOM_BODY_SCRIPT: | <script> // код скрипта </script>
Сохраните изменения и перезапустите ТестОпс.
Добавление пользовательского скрипта через переменную CUSTOM_HEAD_SCRIPT_PATH или CUSTOM_BODY_SCRIPT_PATH
Примечание
Файл должен содержать полный код скрипта, включая теги <script> и </script>.
Рядом с файлом values.yaml создайте файл configmap.yaml:
Введите описание для ConfigMapОбъект Kubernetes для хранения конфигурационных данных в виде пар «ключ — значение». Данные из ConfigMap можно смонтировать в контейнер как файлы, указав в секции
dataназвание файла со скриптом и код скрипта полностью, например:yamlapiVersion: v1 kind: ConfigMap metadata: name: testops-custom-scripts namespace: testops data: custom-body.html: | <script> // код скрипта </script>Сохраните изменения.
В этой же директории создайте ConfigMap в кластере, выполнив команду:
shkubectl apply -f configmap.yamlСмонтируйте ConfigMap в под сервиса testops с помощью команды
kubectl patch, например:bashkubectl -n testops patch deployment testops-testops --type=strategic -p ' spec: template: spec: containers: - name: testops volumeMounts: - name: custom-scripts mountPath: /etc/testops/custom-scripts readOnly: true volumes: - name: custom-scripts configMap: name: testops-custom-scripts 'Дождитесь перезапуска пода.
В файле values.yaml:
Добавьте нужную переменную в секцию
env.open(или в секцию, где задаются переменные окружения сервиса testops):CUSTOM_HEAD_SCRIPT_PATH— для добавления скрипта в начало секции<head>;CUSTOM_BODY_SCRIPT_PATH— для добавления скрипта в начало секции<body>.
В указанной переменной введите абсолютный путь к файлу со скриптом внутри контейнера. Путь должен совпадать с каталогом монтирования ConfigMap и именем ключа в секции
data, например:yamlenv: open: CUSTOM_BODY_SCRIPT_PATH: /etc/testops/custom-scripts/custom-body.html
Сохраните изменения и перезапустите ТестОпс.
Проверка работы пользовательского скрипта
Откройте ТестОпс в вашем браузере.
В терминале в логах сервиса testops проверьте записи о встраивании скрипта:
The index.html has been successfully modified.— ТестОпс успешно обработал файл index.html.Injected custom head script from ...илиInjected custom body script from ...— скрипт встроен в секцию<head>или<body>соответственно.
Откройте инструменты разработчика в вашем браузере.
На вкладках Console и Network проверьте, что скрипт работает без ошибок и отправляет встроенные в него запросы.
Устранение неполадок
Скрипт не встраивается в файл index.html
Если в логах сервиса testops отображается запись The index.html has been successfully modified., но нет строки Injected custom head script from ... или Injected custom body script from ..., проверьте:
- названия переменных, указанных в конфигурационных файлах ТестОпс;
- путь к файлу со скриптом;
- доступ сервиса testops к файлу со скриптом.
Если файл скрипта недоступен, в логах отобразится запись Failed to read custom head script from path или Failed to read custom body script from path.
Скрипт не отправляет запросы
Расширения для блокировки рекламы (например, Adblock Plus) могут блокировать запросы скрипта к внешним сервисам.
Если скрипт не отправляет данные, отключите расширение для блокировки рекламы и проверьте работу скрипта. При необходимости добавьте домен скрипта в исключения расширения.

