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

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

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

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

    Обзор

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

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

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

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

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

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

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