Как настроить динамические формы
Содержание
Обзор функциональностиСценарии использованияБыстрый стартБазовая конфигурация формыПодпись формыОписание формыПодсказка-заполнительВсплывающая подсказка формыОтключенное состояние формыПоддерживаемые типы полейТекстовый вводМногострочный текстовый вводВвод теговRadioSwitchYAML EditorПоле выбораБазовая конфигурация содержимогоКонфигурация динамических вариантов через APIЗначения параметров по умолчаниюВалидация формыОбязательная проверкаПроверка длиныПроверка числового диапазонаПроверка регулярным выражениемПримеры использованияНастройка динамических форм в TaskНастройка динамических форм в PipelineУстранение неполадокОбзор функциональности
Функция конфигурации динамических форм позволяет декларативно настроить удобный интерактивный интерфейс для таких ресурсов, как Pipeline и Task. Без написания frontend-кода, просто добавив конфигурацию style.tekton.dev/descriptors в annotations ресурса, вы можете получить:
- Динамическую генерацию формы: автоматически создавайте интерактивные формы для параметров ресурса, обеспечивая более удобный опыт при оркестрации и запуске
PipelineиTask. - Поддержку богатого набора компонентов: предоставляет различные элементы формы, такие как текстовые поля, селекторы, переключатели, YAML-редакторы и т. д.
- Валидацию полей: встроенные правила проверки, чтобы убедиться, что ввод пользователя соответствует требованиям.
- Динамическую загрузку данных: поддерживает динамическую загрузку вариантов через API.
Сценарии использования
- Оркестрация/выполнение Pipeline: позволяет пользователям заполнять такие параметры, как namespace и secrets, через удобные формы при оркестрации или запуске
Pipeline - Повторное использование Task: предоставляет значения по умолчанию, варианты в выпадающем списке и валидацию для общих параметров на уровне шаблона
TaskилиPipeline - Выбор в разных окружениях: динамически запрашивает доступные окружения или конфигурации через API и использует их как варианты выбора
Быстрый старт
Базовая структура конфигурации
Все конфигурации определяются через поле style.tekton.dev/descriptors в annotations:
Описание конфигурации
path: указывает путь к параметру в форматеparams.parameter-namex-descriptors: массив элементов конфигурации, каждый элемент конфигурации начинается сurn:alm:descriptor:
Простой пример
Настройка обязательного текстового поля для параметра Task:
Базовая конфигурация формы
Подпись формы
Описание формы
Подсказка-заполнитель
Всплывающая подсказка формы
Отключенное состояние формы
Поддерживаемые типы полей
Текстовый ввод
Многострочный текстовый ввод
Ввод тегов
Radio
Switch
YAML Editor
Поле выбора
Базовая конфигурация содержимого
Конфигурация динамических вариантов через API
Когда элементам формы нужно динамически загружать доступные варианты в зависимости от текущего окружения (например, доступные namespaces, secrets и т. д.), можно использовать динамическую конфигурацию через API, чтобы в реальном времени получать варианты выпадающего списка из backend-интерфейсов.
В этом режиме URL API обычно используется в сочетании с context variables для динамического формирования путей запроса на основе текущего cluster, namespace, project пользователя или заполненных параметров. Например:
Доступные context variables
В динамических путях API можно использовать ${variable} для ссылки на контекстную информацию во время выполнения.
- Общие context variables
- Context variables, связанные с Pipeline/Task
Эти переменные обычно используются вместе с URL API для динамического формирования адресов запросов в разных окружениях, что позволяет реализовать логику загрузки вариантов с учетом окружения. Например:
Настройка пути к данным в возвращаемом результате
Когда API возвращает сложную структуру, например:
Можно использовать path, чтобы указать, как извлекать массив options из структуры.
Настройка полей сопоставления label и value для options
Если возвращаемый объект данных сложный и требуется указать внутренние поля как "display name" и "option value", можно использовать:
Когда API возвращает простой массив string[], эта конфигурация не требуется.
Настройка параметров запроса API
Если нужно передать в запрос API параметры query string (например, поисковые ключевые слова или фильтры), можно использовать:
Когда пользователь вводит "test" в выпадающем списке, фактический запрос будет таким:
Расширенное использование: поддерживаются выражения JavaScript, например:
Значения параметров по умолчанию
Фиксированное значение по умолчанию
Динамическое значение по умолчанию на основе выражения
Доступные переменные:
-
option: исходные данные option -
index: индекс option -
length: общее количество options -
context: параметры контекста
Для правил синтаксиса условий в сложных сценариях, пожалуйста, обратитесь к JavaScript syntax.
Валидация формы
Поддерживается настройка различных правил валидации, несколько правил можно применять одновременно.
Обязательная проверка
Проверка длины
Проверка числового диапазона
Проверка регулярным выражением
Комбинированный пример: настройка поля пароля с полной валидацией
Примеры использования
Настройка динамических форм в Task
Пример: предоставление выпадающего списка для выбора namespaces для параметра image в Task.
Эффект: когда пользователи оркестрируют Pipeline или TaskRun через UI, параметр namespace этого Task поддерживает выбор namespace из выпадающего списка.
Настройка динамических форм в Pipeline
Пример: предоставление выпадающего списка для выбора namespaces для параметра target-namespace в Pipeline.
Эффект: когда пользователи запускают Pipeline через UI или нужно связать этот pipeline в других ресурсах (Trigger, TriggerTemplate) и настроить параметры выполнения, параметр target-namespace поддерживает выбор namespace из выпадающего списка.
Устранение неполадок
- Форма не отображается или конфигурация не применяется: проверьте, корректен ли YAML-формат
style.tekton.dev/descriptors, убедитесь, чтоpathзадан какparams.parameter-name, проверьте, что каждый descriptor начинается с- urn:alm:descriptor: - Динамические options не загружаются: убедитесь, что путь API указан верно, проверьте, есть ли у текущего пользователя права на доступ к указанному API resource, убедитесь, что конфигурации
path,labelиvalueуказывают на поля, которые существуют в возвращаемых данных - Значение по умолчанию не применяется: убедитесь, что фиксированное значение по умолчанию использует формат
expression:props.default:value, а значение по умолчанию на основе выражения использует===вместо=, проверьте правильность написания переменных (option, index, length, context) в выражении - Context variables не разрешаются: проверьте, что имена переменных указаны верно (например,
context.namespace, а неcontext.namespaces), убедитесь, что переменные используются в descriptors, которые поддерживают выражения, проверьте, нет ли ошибок в синтаксисе JavaScript-выражения