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

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

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

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

    Overview

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

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

    Lifecycle of 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 можно безопасно удалить из кластера.

    Data Model

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

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