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

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

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

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

    Обзор

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

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

    Жизненный цикл Результатов

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

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

    • Запись - это единственный экземпляр данных. Обычно это данные выполнения (например, PipelineRun, TaskRun, логи), но они также могут ссылаться на другие данные о событиях/выполнениях. Записи спроектированы так, чтобы гибко поддерживать любую информацию, которую инструменты желают предоставить о событиях CI.
    • Результаты являются агрегаторами записей, позволяя пользователям ссылаться на группы записей как на единое целое. Например, у вас может быть Результат, группирующий следующие записи:
      • Исходное событие, вызвавшее операцию (например, Pull Request, Push).
      • Созданный PipelineRun.
      • TaskRuns, созданные в ответ на PipelineRun.
      • Получение облачных событий.
      • Получение обновлений статуса источника.

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