• Русский
  • Введение

    Tekton Results предназначен для того, чтобы помогать пользователям логически группировать исторические записи рабочих нагрузок CI/CD и отделять долгосрочное хранилище Results от контроллера Pipeline. Это позволяет:

    • Предоставлять пользовательские метаданные Results о рабочих процессах CI/CD, которые недоступны в CRD Tekton TaskRun/PipelineRun (например, действия после выполнения)
    • Группировать связанные рабочие нагрузки вместе (например, объединять связанные TaskRuns и PipelineRuns в единый объект)
    • Делать долгосрочную историю Results независимой от контроллера CRD Pipeline, тем самым освобождая ресурсы etcd для выполнения запусков.
    • Сохранять журналы, сгенерированные TaskRun/PipelineRun, чтобы завершенные запуски можно было очищать и экономить ресурсы.

    Дополнительные сведения и мотивация проекта приведены в TEP-0021.

    Overview

    Tekton Results состоит из двух основных компонентов:

    • gRPC API server с возможностью запросов через API, использующий постоянное хранилище (см. исходный код проекта в proto/v1alpha2 для получения последних спецификаций API).
    • Watcher controller, используемый для мониторинга и передачи обновлений TaskRuns и PipelineRuns на API server.

    Жизненный цикл Results

    1. Пользователи создают TaskRuns или PipelineRuns через Kubernetes API как обычно.
    2. Results Watcher отслеживает изменения всех TaskRuns/PipelineRuns.
    3. Если TaskRun/PipelineRun изменяется, watcher обновляет (или создает) соответствующий Record с использованием Results API (при необходимости также создается Result).
      • watcher также аннотирует исходный TaskRun/PipelineRun идентификатором.
    4. Пользователи могут напрямую получать/запрашивать данные Results/Records из API. После того как TaskRun/PipelineRun завершен и успешно сохранен в Results API, исходные объекты CRD можно безопасно удалить из кластера.

    Модель данных

    • Record — это отдельный экземпляр данных. Обычно это данные выполнения (например, PipelineRun, TaskRun, logs), но они также могут ссылаться на другие данные о событиях/выполнениях. Record спроектированы так, чтобы гибко поддерживать любую информацию, которую инструменты хотят предоставлять о событиях CI.
    • Results — это агрегаторы Record, позволяющие пользователям ссылаться на группы Record как на единый объект. Например, можно иметь Results, группирующий следующие Record:
      • Исходное событие, которое инициировало операцию (например, pull request, push).
      • Созданный PipelineRun.
      • TaskRuns, созданные в ответ на PipelineRun.
      • Получение cloud events.
      • Получение обновлений статуса исходного кода.

    (Примечание: в настоящее время watcher не поддерживает все эти типы данных, но это примеры данных, поддержку которых мы планируем реализовать.)