Один общий шаг публикации прод-версии для нескольких сервисов флота — важный шаг стандартизации: способ выкладки на боевую карту больше не изобретается заново для каждого сервиса.
Составное GitHub Action — общий, переиспользуемый шаг публикации: сборка, доставка на боевую карту, перезапуск сервиса. Любой сервис флота, которому нужна выкладка на GPU-карту, подключает этот шаг вместо того, чтобы писать и поддерживать собственный скрипт с нуля.
Правила выкладки — единый, автоматически инфорсящийся контракт: способ доставки на карту меняется один раз, в одном месте, и сразу для всех потребителей сразу, а не для каждого сервиса отдельно и с задержкой.
Более ранняя оценка называла три подтверждённых потребителя механизма. Прямая проверка кода на боевой ветке — не повторение старой оценки — нашла четвёртого: витрина 3D-моделей домов тоже публикуется через него.
Первая версия составного действия — под конкретный, единственный на тот момент сервис, на базе типового шага сборки и доставки.
Параметры выкладки передаются между шагами через переменные окружения, а не текстовой подстановкой в шаблон — архитектурное решение, закрывающее целый класс проблем сразу, а не точечно.
Способ доставки переведён на вариант, разрешённый общим для всей организации списком допустимых действий — без снижения строгости самой политики.
Сценарий выкладки, переподключающийся по SSH в несколько слоёв, доводит перезапуск сервиса до конца надёжно на любом числе промежуточных подключений.
Появился альтернативный способ доставки для сервисов с другой схемой размещения — контейнерный оркестратор, без замены первого варианта.
Витрина 3D-моделей домов переведена на общий механизм выкладки наравне с остальными тремя сервисами.
Механизм проверяет сам себя перед каждым изменением так же строго, как любой сервис флота проверяет себя перед выкладкой.
Один из двух вариантов транспорта использует набор вспомогательных скриптов, скопированных в само действие вручную. Следующий шаг — сделать эту синхронизацию автоматической, чтобы вручную скопированная копия не могла незаметно разойтись с исходной.