Последовательность шагов сборки

Введение

Данная документация описывает последовательность шагов, необходимых для функционирования конвейера сборки OCI-образов. Конвейер автоматизирует сборку, тестирование, подпись, публикацию и очистку временных ресурсов.

Схема конвейера, загрузка

Описание шагов сборки

Действия по сборке OCI-образа

  1. Пользователь получает у API токен для выполнения запросов на сборку OCI-образов.
  2. Запрос на сборку поступает в API.
  3. API выполняет аутентификацию и авторизацию пользователя, формирует taskId и отправляет запрос в RabbitMQ.
  4. Компонент Saver извлекает запрос из очереди брокера.
  5. Saver добавляет в TrackDB первую запись по заданию: стадия BUILD, состояние NEW.
  6. Saver записывает credentials пользователя для доступа к git и registry в Secret Manager.
  7. При успешном выполнении шагов 5 и 6 Saver отправляет событие BUILD/NEW в Distributor через RabbitMQ.
  8. Первый доступный компонент Distributor извлекает запрос из очереди брокера.
  9. Distributor получает параметры Helm chart для стадии из SysDB, подставляет данные задания в values.yaml и при необходимости читает credentials из Secret Manager.
  10. Distributor запускает Kubernetes Job через helm upgrade --install и записывает в TrackDB состояние SUSPEND. Это состояние означает, что стадия поставлена в Kubernetes и ожидает выполнения.
  11. В pod стадии запускается рабочий контейнер стадии. Для сбора логов используется Vector: он отправляет логи в Loki в namespace altflow-observability.
  12. Tracker отслеживает pod'ы стадий через Kubernetes LIST/WATCH. Когда рабочий контейнер стартует, Tracker записывает RUNNING в TrackDB.
  13. После завершения рабочего контейнера Tracker записывает DONE или FAIL в TrackDB, публикует финальное состояние стадии в RabbitMQ для Stager и удаляет Helm release стадии.
  14. Stager получает финальное состояние стадии из RabbitMQ.
  15. Если стадия завершилась DONE, Stager выбирает следующую стадию по конфигурации. TEST выполняется только при наличии test entrypoints, SIGN выполняется только для настроенных групп пользователей, PUSH публикует готовый образ в пользовательский registry.
  16. Если стадия завершилась FAIL, Stager отправляет задачу на CLEANUP, если эта стадия включена в конфигурацию.
  17. Для следующей стадии Stager записывает NEW в TrackDB и отправляет событие в Distributor.
  18. После завершения PUSH Stager запускает финальную стадию CLEANUP, которая удаляет временные ресурсы и данные задания.

Действия по получению статуса сборки OCI-образа

  1. Запрос на получение статуса сборки поступает в API.
  2. API проверяет токен и выполняет авторизацию.
  3. API обращается к TrackDB, получает историю состояний задания и возвращает её пользователю.

Действия по получению логов сборки OCI-образа

  1. Запрос на получение логов сборки поступает в API.
  2. API проверяет токен и выполняет авторизацию.
  3. API обращается к Loki через observability endpoint и возвращает пользователю логи, отфильтрованные по taskId и, при необходимости, по eventStage.