Настройка обзора задач с помощью шаблонов
В этом руководстве показано, как использовать шаблоны на основе ConfigMap для отображения расширенных HTML-отчетов во вкладке Overview для ваших TaskRuns и PipelineRuns.
Вместо того чтобы записывать полный HTML- или Markdown-отчет в один результат Task, ваши Tasks генерируют небольшие структурированные метрики, а UI использует шаблон из ConfigMap для отображения итогового обзора.
Используйте это руководство, если:
- Вы хотите получить единый, аккуратный обзор для
Task(например, сводку сканирования кода). - Ваш Markdown-обзор приближается к или превышает эффективный лимит размера результата
Task. - Вы хотите повторно использовать один и тот же макет для многих
Tasksили кластеров.
Отрисовка шаблона — это альтернатива overview-markdown. Если
Taskвсё ещё выводит результат с именемoverview-markdown, UI предпочитает этот Markdown и пропускает отрисовку шаблона.
Содержание
Предварительные требованияКак это работаетШаги1. Выберите между Markdown и шаблонами2. Создайте ConfigMap с шаблоном3. Добавьте результат в ваш Task4. Аннотируйте Task для привязки к шаблону5. Запустите Task и проверьте вкладку OverviewСоветы и рекомендацииУстранение неполадокВо вкладке Overview ничего не отображаетсяШаблон отрисовывается, но данные пустые или неправильныеЛимиты размера результата или сообщения о завершенииВыбран неправильный шаблонПредварительные требования
- Установленные Tekton Pipelines в вашем кластере.
- Права на создание ConfigMaps в общем пространстве имён шаблонов
kube-public.
Как это работает
- Ваш
Taskгенерирует один или несколько результатов, содержащих метрики или сводные данные. - Метаданные вашего
Taskвключают аннотации, которые сообщают UI:- Какой ConfigMap использовать в качестве шаблона (через селектор меток).
- Какие результаты
Taskнужно считать и передать в шаблон.
- UI:
- Проверяет, есть ли у
TaskRunрезультат с именемoverview-markdown. Если есть, он отображает этот Markdown и останавливается. - В противном случае читает аннотации шаблона из
TaskRun. - Находит подходящий ConfigMap и загружает
template.ejs. - Считывает объявленные результаты из
TaskRunи объединяет их в один JSON-пейлоад. - Выполняет EJS шаблон с этим пейлоадом и отображает сгенерированный HTML во вкладке Overview.
- Проверяет, есть ли у
Шаги
1. Выберите между Markdown и шаблонами
Используйте результат overview-markdown, если:
- Содержимое короткое и легко укладывается в лимиты размера результата.
- Вам нужна очень простая форматировка.
Используйте шаблон ConfigMap, если:
- Вам нужен более сложный макет (колонки, бейджи, индикаторы прогресса и т.д.).
- У вас уже есть структурированные метрики и вы хотите более красивое представление.
- Вы хотите, чтобы один макет обзора использовался несколькими
Tasks.
Если настроены оба варианта, выигрывает
overview-markdown. Вы можете просмотреть вывод шаблона, просто не записывая ничего в результатoverview-markdown.
2. Создайте ConfigMap с шаблоном
Создайте ConfigMap, содержащий ваш EJS шаблон и метки, которые идентифицируют, к какому Task он относится.
EJS — это простой язык шаблонов, который позволяет генерировать HTML-разметку с помощью обычного JavaScript. Без навязанных правил организации. Без изобретения заново итераций и управления потоком. Просто обычный JavaScript. Подробнее смотрите:
Пример:
Основные моменты:
- Имя файла шаблона всегда
template.ejs. - UI внедряет переменные из результатов в шаблон.
- Вы можете использовать обычный синтаксис EJS (
<% %>,<%= %>) для простой логики и форматирования.
3. Добавьте результат в ваш Task
Определите результат в вашем Task, который будет содержать метрики, используемые шаблоном.
Пример Task:
Рекомендации:
- Держите результат маленьким и плоским. Используйте простые поля, такие как счётчики, проценты, статус и URL.
- Не встраивайте большие текстовые блоки.
- Если используете объектный результат, убедитесь, что шаг записывает валидный JSON (без лишних запятых, с правильным экранированием).
4. Аннотируйте Task для привязки к шаблону
Используйте аннотации в Task, чтобы указать UI, какой шаблон использовать и какие результаты передавать.
Пример с одним результатом:
Концептуально UI сформирует пейлоад:
Затем выполнит template.ejs с этим пейлоадом, чтобы вы могли использовать metrics.total, metrics.status и т.д.
Вы можете объединять несколько результатов Task в одну отрисовку шаблона. Это полезно, когда:
- Один результат содержит метрики.
- Другой результат содержит URL на полный отчет.
Пример:
UI сформирует пейлоад, похожий на:
5. Запустите Task и проверьте вкладку Overview
-
Примените
ConfigMapиTaskв вашем кластере. -
Создайте
TaskRunилиPipelineRun, использующий этотTask, например: -
Дождитесь завершения выполнения.
-
Откройте выполнение в UI и выберите вкладку Overview.
Если всё настроено правильно, вы увидите HTML, сгенерированный вашим шаблоном.
Если
Taskтакже выводитoverview-markdown, вместо шаблона будет показан Markdown.
Советы и рекомендации
- Предпочитайте маленькие результаты с метриками. Рассматривайте результаты как компактное резюме.
- Держите логику шаблона простой. Сосредоточьтесь на презентации, а не на бизнес-логике. Избегайте тяжёлых вычислений в шаблоне.
- Обрабатывайте отсутствие данных защитно. Используйте значения по умолчанию в шаблоне, чтобы отсутствие полей не приводило к сбоям при отрисовке.
Устранение неполадок
Во вкладке Overview ничего не отображается
- Выводит ли
Taskпустойoverview-markdown?- Если да, UI покажет этот пустой Markdown и проигнорирует шаблоны. Вы можете увидеть вывод шаблона, просто не записывая ничего в результат
overview-markdown.
- Если да, UI покажет этот пустой Markdown и проигнорирует шаблоны. Вы можете увидеть вывод шаблона, просто не записывая ничего в результат
- Содержит ли
TaskRunрезультаты, указанные вoverview-template-result-key?- Проверьте YAML
TaskRunи посмотрите.status.results.
- Проверьте YAML
- Соответствует ли селектор в
overview-template-selectorровно одномуConfigMapв пространстве имёнkube-public?- Проверьте с помощью
kubectl get configmap -l <your-selector> -n kube-public.
- Проверьте с помощью
Шаблон отрисовывается, но данные пустые или неправильные
- Если вы используете объектный результат, убедитесь, что результат валиден и содержит поля, ожидаемые шаблоном.
- Проверьте, что имена в
overview-template-result-keyточно совпадают с именами результатовTask.
Лимиты размера результата или сообщения о завершении
- Удалите из результатов несущественные поля.
- Помещайте подробные отчёты по файлам в логи или внешние системы, а в результат включайте только сводные числа и URL.
- Помните, что каждый
Taskвсё ещё делит общий лимит сообщения о завершении между всеми шагами и результатами. - Изменение лимита результата
Выбран неправильный шаблон
- Убедитесь, что
overview-template-selectorдостаточно специфичен (например, включает имяTaskи версию). - Избегайте повторного использования одинаковых меток для разных шаблонов.
- Если несколько
ConfigMapsсоответствуют селектору, уточните метки, чтобы выбрать только одинConfigMap.
Когда у вас есть ConfigMap с шаблоном, результаты метрик и правильные аннотации Task, вы можете создавать переиспользуемые, версионированные макеты обзора Task без изменения самого UI.