• Русский
  • Создание TriggerTemplate

    TIP

    Для полного понимания TriggerTemplates, включая их архитектуру, преимущества и основные принципы, см. документ Глубокое понимание TriggerTemplate.

    Обзор

    TriggerTemplate — это ресурс, используемый для определения шаблона для ресурсов, которые могут быть созданны и выполнены, таких как TaskRun или PipelineRun, когда EventListener обнаруживает событие. Он предлагает возможности параметризации, позволяя использовать эти параметры в любом месте шаблона ресурса.

    Поддерживаемые типы ресурсов

    Сейчас TriggerTemplate поддерживает следующие ресурсы Tekton Pipelines:

    v1beta1 Тип ресурсаОписание
    PipelineОпределение пайплайна
    PipelineRunЭкземпляр выполнения пайплайна
    TaskОпределение задачи
    TaskRunЭкземпляр выполнения задачи

    Основная структура

    Вот типичный пример определения TriggerTemplate:

    apiVersion: triggers.tekton.dev/v1beta1
    kind: TriggerTemplate
    metadata:
      name: pipeline-template
    spec:
      params:                           # Определение параметров
        - name: gitrevision            # Имя параметра
          description: Git revision      # Описание параметра
          default: main               # Значение по умолчанию (необязательно)
        - name: gitrepositoryurl
          description: URL репозитория Git
        - name: message
          description: Печать сообщения
          default: Это сообщение по умолчанию
      resourcetemplates:              # Определение шаблона ресурса
        - apiVersion: tekton.dev/v1beta1
          kind: PipelineRun
          metadata:
            generateName: simple-pipeline-run-  # Префикс имени для генерации
          spec:
            pipelineRef:
              name: simple-pipeline
            params:
              - name: message
                value: $(tt.params.message)    # Использование параметров шаблона
              - name: revision
                value: $(tt.params.gitrevision)

    Конфигурация параметров

    1. Определение параметров

    Определите параметры в spec.params:

    spec:
      params:
        - name: param1                # Имя параметра
          description: Описание параметра # Описание параметра
          default: Значение по умолчанию  # Необязательно значение по умолчанию

    2. Использование параметров

    Используйте параметры в шаблоне ресурса:

    • Основной синтаксис: $(tt.params.parameter_name)
    • Пример: $(tt.params.gitrevision)

    3. Типы параметров

    Параметры в TriggerTemplate поддерживают только строковые типы значений. Каждый параметр включает следующие поля:

    • name: Имя параметра (обязательно)
    • description: Описание параметра (необязательно)
    • default: Значение по умолчанию, должно быть строкой (необязательно)
    Note

    Примечание: Хотя значения параметров могут быть только строками, вы можете включать форматированный контент (такой как JSON-строки) внутри строки и анализировать его во время использования.

    Обработка JSON объектов

    При передаче данных JSON вам нужно обрабатывать их как строку:

    # Определите параметры в TriggerTemplate
    metadata:
      annotations: # Позволяет форматировать JSON как строку, добавляя эту конфигурацию
        triggers.tekton.dev/old-escape-quotes: "true" # 
    spec:
      params:
        - name: jsonData
          description: Данные в формате JSON (как строка)
          default: '{"key": "value"}'
    
    # Используйте в шаблоне ресурса
    spec:
      params:
        - name: data
          value: $(tt.params.jsonData)  # Передано как строка

    Рекомендации по лучшим практикам

    1. Именование и организация параметров

      • Используйте четкие и описательные имена параметров
      • Предоставляйте описания для всех параметров
      • Правильно используйте значения по умолчанию
    2. Проектирование шаблонов

      • Сохраняйте шаблоны многоразовыми
      • Используйте динамическое создание имен
      • Соответствующим образом разбивайте сложные шаблоны
    3. Обработка ошибок

      • Предоставляйте значения по умолчанию для критически важных параметров
      • Используйте перехватчик CEL для проверки параметров
      • Реализуйте соответствующие механизмы обработки ошибок

    Часто задаваемые вопросы

    1. Ошибки парсинга параметров

      • Проверьте синтаксис параметра
      • Проверьте формат JSON объекта
      • Убедитесь, что имя параметра соответствует
    2. Сбои в создании ресурсов

      • Проверьте формат шаблона ресурса
      • Проверьте значения параметров
      • Проверьте системные разрешения
    3. Конфликты имен

      • Используйте generateName
      • Реализуйте проверки на уникальность

    Примеры использования

    1. Основной CI/CD пайплайн

    apiVersion: triggers.tekton.dev/v1beta1
    kind: TriggerTemplate
    metadata:
      name: ci-pipeline-template
    spec:
      params:
        - name: git-revision
          description: SHA коммита Git
        - name: git-repo-url
          description: URL репозитория Git
      resourcetemplates:
        - apiVersion: tekton.dev/v1beta1
          kind: PipelineRun
          metadata:
            generateName: ci-run-
          spec:
            pipelineRef:
              name: ci-pipeline
            params:
              - name: revision
                value: $(tt.params.git-revision)
              - name: repo-url
                value: $(tt.params.git-repo-url)

    2. Развертывание с несколькими средами

    apiVersion: triggers.tekton.dev/v1beta1
    kind: TriggerTemplate
    metadata:
      name: deploy-template
    spec:
      params:
        - name: environment
          description: Среда развертывания
          default: development
        - name: image-tag
          description: Тег изображения
      resourcetemplates:
        - apiVersion: tekton.dev/v1beta1
          kind: PipelineRun
          metadata:
            generateName: deploy-$(tt.params.environment)-
          spec:
            pipelineRef:
              name: deploy-pipeline
            params:
              - name: target-environment
                value: $(tt.params.environment)
              - name: image-tag
                value: $(tt.params.image-tag)

    Ссылки на справочную документацию