• Русский
  • Создание Pipelines для Tekton Hub

    Обзор

    В этом руководстве описаны конкретные требования и лучшие практики создания Pipelines, которые работают с каталогами Tekton Hub. Особое внимание уделяется метаданным, специфичным для Hub, проверке и стандартам композиции.

    Метаданные, специфичные для Hub

    Обязательные метки для Hub

    metadata:
      name: my-custom-pipeline
      labels:
        app.kubernetes.io/version: "0.1"  # Must match catalog version directory

    Обязательные аннотации для Hub

    metadata:
      annotations:
        tekton.dev/pipelines.minVersion: "0.17.0"    # Minimum Tekton version
        tekton.dev/categories: "Integration & Delivery"  # Hub category
        tekton.dev/tags: "ci,build,test,deploy"     # Hub search tags
        tekton.dev/displayName: "CI/CD Pipeline"    # Hub display name
        tekton.dev/platforms: "linux/amd64,linux/arm64"  # Supported platforms

    Ссылки на Task в Hub

    Ссылка на Task из каталога для Hub

    spec:
      tasks:
      - name: git-clone
        taskRef:
          resolver: hub
          params:
          - name: catalog
            value: "catalog"  # Hub catalog name
          - name: type
            value: tekton
          - name: kind
            value: task
          - name: name
            value: git-clone  # Task name from Hub
          - name: version
            value: "0.9"      # Task version
        params:
        - name: url
          value: $(params.repo-url)
        workspaces:
        - name: output
          workspace: source-code

    Категории и теги Hub

    Стандартные категории Pipeline

    • Интеграция и доставка
    • Непрерывная интеграция
    • Непрерывное развертывание
    • Тестирование
    • Безопасность
    • Сборка и упаковка

    Эффективное назначение тегов для Pipeline

    • Используйте теги, связанные с рабочим процессом (ci, cd, cicd)
    • Включайте технологические стеки (nodejs, java, python, golang)
    • Добавляйте целевые среды развертывания (kubernetes, cloud, containers)

    Стандарты параметров Hub

    Специфичные для Hub требования к параметрам

    spec:
      params:
      - name: repo-url
        description: "Git repository URL for source code"  # Clear description for Hub UI
        type: string
      - name: target-environment
        description: "Deployment target environment"
        type: string
        default: "development"  # Sensible default
      - name: build-args
        description: "Additional build arguments"
        type: array
        default: []  # Safe default for arrays

    Шаблон Pipeline для Hub

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: my-hub-pipeline
      labels:
        app.kubernetes.io/version: "0.1"  # Match catalog version
      annotations:
        tekton.dev/pipelines.minVersion: "0.17.0"
        tekton.dev/categories: "Integration & Delivery"  # Hub category
        tekton.dev/tags: "ci,build,deploy"               # Hub search tags
        tekton.dev/displayName: "My CI/CD Pipeline"      # Hub display name
        tekton.dev/platforms: "linux/amd64,linux/arm64"  # Platforms
    spec:
      description: >-
        Pipeline description for Hub documentation
      params:
      - name: git-url
        description: Git repository URL
      - name: image-name
        description: Container image name
        default: "myapp:latest"
      workspaces:
      - name: source-code
        description: Source code workspace
      - name: registry-creds
        description: Distribution registry credentials
        optional: true
    
      tasks:
      - name: fetch-source
        taskRef:
          resolver: hub
          params:
          - name: catalog
            value: "catalog"
          - name: type
            value: tekton
          - name: kind
            value: task
          - name: name
            value: git-clone  # Reference Hub catalog task
          - name: version
            value: "0.9"
        params:
        - name: url
          value: $(params.git-url)
        workspaces:
        - name: output
          workspace: source-code
    
      - name: build-image
        taskRef:
          resolver: hub
          params:
          - name: catalog
            value: "catalog"
          - name: type
            value: tekton
          - name: kind
            value: task
          - name: name
            value: buildah    # Reference Hub catalog task
          - name: version
            value: "0.4"
        runAfter: [fetch-source]
        params:
        - name: image
          value: $(params.image-name)
        workspaces:
        - name: source
          workspace: source-code
        - name: registryconfig
          workspace: registry-creds
    
      finally:
      - name: cleanup
        taskRef:
          resolver: hub
          params:
          - name: catalog
            value: "catalog"
          - name: type
            value: tekton
          - name: kind
            value: task
          - name: name
            value: cleanup-workspace
          - name: version
            value: "0.1"
        workspaces:
        - name: source
          workspace: source-code

    Лучшие практики для Hub

    Композиция Task для Hub

    • По возможности используйте Task из того же каталога Hub
    • Для стабильности указывайте конкретные версии Task
    • Обеспечивайте понятное сопоставление параметров
    • Документируйте зависимости между Task

    Управление рабочими пространствами для Hub

    • Используйте понятные имена и описания workspace
    • Помечайте необязательные workspace как optional: true
    • Документируйте поток данных workspace между Task
    • По возможности минимизируйте требования к workspace

    Повторное использование Pipeline для Hub

    • Проектируйте для типовых сценариев использования
    • Предоставляйте гибкие параметры
    • Включайте разумные значения по умолчанию
    • Поддерживайте несколько сценариев развертывания

    Требования к тестированию Hub

    Обязательные тестовые файлы Pipeline

    • Предоставьте рабочий каталог samples/ с примерами PipelineRun
    • Включите run.yaml, демонстрирующий типичное использование
    • Проводите тестирование с различными сочетаниями параметров
    • Проверяйте конфигурации workspace
    • Тестируйте сценарии обработки ошибок

    Чек-лист проверки Pipeline для Hub

    • Нужные метаданные Hub присутствуют
    • Пример PipelineRun работает корректно
    • У всех параметров есть понятные описания
    • Workspace корректно описаны
    • Ссылки на Task используют tasks каталога Hub
    • Совместимость с платформами проверена
    • Включены tasks в finally для очистки

    Безопасность для Hub Pipelines

    Требования безопасности Hub

    • В определениях Pipeline не должно быть жестко заданных секретов
    • Используйте безопасные ссылки на Task
    • Документируйте необходимые разрешения service account
    • Следуйте принципу минимальных привилегий
    • Проверяйте входные параметры

    Требования к документации

    Стандарты документации Pipeline для Hub

    • В каталоге pipeline должен быть полный README.md
    • Документируйте полный рабочий процесс и назначение
    • Предоставляйте понятные описания параметров
    • Включайте примеры использования и типовые конфигурации
    • Документируйте предварительные требования и зависимости
    • Объясняйте требования к workspace
    • Включайте руководство по устранению неполадок

    Чек-лист публикации в Hub

    ✅ Соответствие требованиям Hub

    • Присутствуют обязательные метаданные Hub (labels и annotations)
    • Метка версии соответствует структуре каталога
    • У всех параметров есть понятные описания
    • Workspace корректно задокументированы
    • Используются ссылки на Task каталога Hub
    • Указана совместимость с платформами
    • Предоставлен рабочий пример PipelineRun
    • Есть полный README с примерами использования
    • Выполнены требования валидации Hub

    ✅ Стандарты качества

    • Pipeline можно повторно использовать в разных средах
    • Реализованы обработка ошибок и очистка
    • Нет жестко заданных значений или секретов
    • Соблюдены лучшие практики безопасности
    • Проверена кроссплатформенная совместимость
    • Документация полная и точная
    • Производительность оптимизирована за счет параллельного выполнения, где это возможно