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

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