• Русский
  • Написание Pipelines для Tekton Hub

    Overview

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

    Hub-специфичные метаданные

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

    metadata:
      name: my-custom-pipeline
      labels:
        app.kubernetes.io/version: "0.1"  # Должно соответствовать версии каталога

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

    metadata:
      annotations:
        tekton.dev/pipelines.minVersion: "0.17.0"    # Минимальная версия Tekton
        tekton.dev/categories: "Integration & Delivery"  # Категория Hub
        tekton.dev/tags: "ci,build,test,deploy"     # Теги для поиска в Hub
        tekton.dev/displayName: "CI/CD Pipeline"    # Отображаемое имя в Hub
        tekton.dev/platforms: "linux/amd64,linux/arm64"  # Поддерживаемые платформы

    Ссылки на Task из Hub

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

    spec:
      tasks:
      - name: git-clone
        taskRef:
          resolver: hub
          params:
          - name: catalog
            value: "catalog"  # Имя каталога Hub
          - name: type
            value: tekton
          - name: kind
            value: task
          - name: name
            value: git-clone  # Имя задачи из Hub
          - name: version
            value: "0.9"      # Версия задачи
        params:
        - name: url
          value: $(params.repo-url)
        workspaces:
        - name: output
          workspace: source-code

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

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

    • Integration & Delivery
    • Continuous Integration
    • Continuous Deployment
    • Testing
    • Security
    • Build & Package

    Эффективное тегирование Pipeline

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

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

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

    spec:
      params:
      - name: repo-url
        description: "URL Git-репозитория с исходным кодом"  # Четкое описание для UI Hub
        type: string
      - name: target-environment
        description: "Целевая среда развертывания"
        type: string
        default: "development"  # Разумное значение по умолчанию
      - name: build-args
        description: "Дополнительные аргументы сборки"
        type: array
        default: []  # Безопасное значение по умолчанию для массивов

    Шаблон Pipeline для Hub

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: my-hub-pipeline
      labels:
        app.kubernetes.io/version: "0.1"  # Соответствует версии каталога
      annotations:
        tekton.dev/pipelines.minVersion: "0.17.0"
        tekton.dev/categories: "Integration & Delivery"  # Категория Hub
        tekton.dev/tags: "ci,build,deploy"               # Теги для поиска в Hub
        tekton.dev/displayName: "My CI/CD Pipeline"      # Отображаемое имя в Hub
        tekton.dev/platforms: "linux/amd64,linux/arm64"  # Платформы
    spec:
      description: >-
        Описание Pipeline для документации Hub
      params:
      - name: git-url
        description: URL Git-репозитория
      - name: image-name
        description: Имя контейнерного образа
        default: "myapp:latest"
      workspaces:
      - name: source-code
        description: Рабочее пространство с исходным кодом
      - name: registry-creds
        description: Учетные данные для регистра дистрибуции
        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  # Ссылка на задачу из каталога Hub
          - 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    # Ссылка на задачу из каталога Hub
          - 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

    Композиция задач для Hub

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

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

    • Используйте описательные имена и описания рабочих пространств
    • Отмечайте необязательные рабочие пространства как optional: true
    • Документируйте поток данных между рабочими пространствами задач
    • Минимизируйте требования к рабочим пространствам, где это возможно

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

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

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

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

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

    Чеклист валидации Pipeline для Hub

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

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

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

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

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

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

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

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

    ✅ Соответствие Hub

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

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

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