Настройка пользовательских почтовых шаблонов
Содержание
ВведениеСценарииПредварительные требованияПоддержка шаблонов в Send MailШаги1. Создайте ConfigMap шаблона2. Настройте pipeline для использования вашего шаблона3. Проверьте результаты рендерингаFAQНужно ли настраиватьstyle.tekton.dev/descriptors?Можно ли использовать встроенные переменные и values.xxx в одном шаблоне?Что произойдет, если renderTemplateName не задан?Какое пространство имен следует использовать для ConfigMap шаблона?Что нужно проверить в первую очередь, если рендеринг не работает?Введение
В этом руководстве объясняется, как добавить новый пользовательский шаблон почтового уведомления для Task Send Mail.
Сценарии
Для большинства вариантов использования сначала применяйте встроенные шаблоны:
- Шаблон почты по умолчанию: выводит базовую информацию о текущем PipelineRun.
- Пользовательский шаблон почты: поддерживает пользовательское содержимое письма через предоставленные параметры шаблона.
Если встроенные шаблоны не соответствуют вашим требованиям, следуйте этому руководству, чтобы создать и настроить новый шаблон.
Предварительные требования
- Task
Send Mailдоступен в вашем кластере. - У вас есть разрешение на создание
ConfigMapв целевом пространстве имен шаблона.
Поддержка шаблонов в Send Mail
Task Send Mail поддерживает рендеринг на основе шаблонов для subject, body и contentType.
При ссылке на общий шаблон ConfigMap команды могут централизованно поддерживать содержимое писем и повторно использовать один и тот же шаблон в нескольких pipeline.
Подробности о процессе рендеринга, встроенных переменных и renderTemplateValues см. в разделе Поддерживаемые параметры шаблона для Tasks.
Шаги
1. Создайте ConfigMap шаблона
Создайте ConfigMap и задайте параметры следующим образом:
Рекомендуемое пространство имен:
- По возможности размещайте
ConfigMapшаблона вkube-public.kube-public— это часто используемое общее пространство имен, которое упрощает повторное использование одного и того же шаблона ресурсамиTaskRunиз разных пространств имен. - Если вы храните шаблон в другом пространстве имен, явно укажите
renderTemplateNamespaceна это пространство имен в параметрах Task/Pipeline. Подробности см. в разделе Поддерживаемые параметры шаблона для Tasks.
Обязательные параметры:
- Метка
tekton.alaudadevops.io/template-type: mail: помечает этотConfigMapкак почтовый шаблон, чтобы webhook мог определить его как источник рендеринга дляSend Mail. - Ключи данных
subject.tpl,body.tpl,contentType.tpl: рендерятся с использованием синтаксиса Go template (gotemplate) и сопоставляются с параметрамиsubject,bodyиcontentType. О синтаксисе gotemplate см. в документации Gotext/template. Доступные переменные шаблона см. в разделе Поддерживаемые параметры шаблона для Tasks.
Необязательные параметры:
- Аннотация
tekton.alaudadevops.io/template-display-name: понятное человеку имя, отображаемое в селекторах UI и панелях предварительного просмотра. - Аннотация
style.tekton.dev/descriptors: задает вложенную форму дляrenderTemplateValuesв UI, чтобы пользователи могли заполнять переменные шаблона с помощью элементов формы вместо ручного редактирования YAML. О синтаксисе и шаблонах дескрипторов см. в разделе Как настроить динамические формы.
Пример:
2. Настройте pipeline для использования вашего шаблона
Задайте renderTemplateName и renderTemplateNamespace, затем передайте пользовательские значения через renderTemplateValues.
3. Проверьте результаты рендеринга
Проверьте измененный TaskRun и убедитесь, что subject, body и contentType были добавлены в spec.params.
Если рендеринг завершается неудачно, проверьте аннотацию tekton.alaudadevops.io/template-render-error у TaskRun.
FAQ
Нужно ли настраивать style.tekton.dev/descriptors?
Нет. Это необязательно. Настраивайте его только в том случае, если вам нужна структурированная UI-форма для renderTemplateValues.
Можно ли использовать встроенные переменные и values.xxx в одном шаблоне?
Да. Вы можете комбинировать встроенные переменные, например .context.pipelineRun.name, .tasks.status, с пользовательскими значениями, такими как .values.extraMessage.
Что произойдет, если renderTemplateName не задан?
Рендеринг шаблона будет пропущен. Вам нужно будет указать параметры subject и body вручную.
Какое пространство имен следует использовать для ConfigMap шаблона?
По возможности используйте kube-public. Это общее пространство имен, которое упрощает повторное использование одного и того же шаблона ресурсами TaskRun из разных пространств имен.
Если ConfigMap шаблона хранится в другом пространстве имен, явно задайте renderTemplateNamespace для этого пространства имен. Подробности о параметрах см. в разделе Поддерживаемые параметры шаблона для Tasks.
Что нужно проверить в первую очередь, если рендеринг не работает?
- Убедитесь, что
renderTemplateNameиrenderTemplateNamespaceуказывают на существующийConfigMapшаблона. - Убедитесь, что
ConfigMapсодержит меткуtekton.alaudadevops.io/template-type: mailи обязательные ключиsubject.tpl,body.tplиcontentType.tpl. - Проверьте аннотацию TaskRun
tekton.alaudadevops.io/template-render-errorна наличие конкретного сообщения об ошибке.