Введение
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
- Пользователи создают TaskRuns или PipelineRuns через Kubernetes API как обычно.
- Results Watcher отслеживает изменения всех TaskRuns/PipelineRuns.
- Если TaskRun/PipelineRun изменяется, watcher обновляет (или создаёт) соответствующую
Recordс помощью Results API (при необходимости также создаётсяResult).- Watcher также аннотирует исходный TaskRun/PipelineRun идентификатором.
- Пользователи могут напрямую получать/запрашивать данные 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 не поддерживает все эти типы данных, но это примеры данных, которые мы планируем поддерживать.)