ADG Оставить заявку
Блог DevOps 4 мин чтения

GitFlic с CI/CD и container registry: переводим ещё один проект с GitHub

GitFlic добавил нормальный CI/CD и container registry. Переводим проект с GitHub: адаптируем пайплайны, разбираемся со скоростью runner'ов и отсутствием части Actions.

Контекст момента

GitFlic наращивает функциональность: появились CI/CD и container registry для построения отечественной цепочки поставки ПО

Примерно полгода назад мы перевели первый клиентский проект на GitFlic и написали об этом вскользь - тогда платформа закрывала минимум: репозитории, code review, базовый merge request. CI/CD там был только в планах, container registry отсутствовал. С GitHub Actions пайплайны оставляли жить на месте, а GitFlic использовали как зеркало с красивым отечественным адресом.

Теперь GitFlic запустил CI/CD и собственный container registry. Мы взяли реальный проект - один из сервисов клиента из сектора, которому важна отечественная цепочка поставки - и прошли полный путь переноса. Вот что из этого вышло.

Что именно появилось

CI/CD. GitFlic запустил собственный runner на базе Docker и синтаксис пайплайнов, близкий к GitLab CI. Конфигурация идёт через файл .gitflic-ci.yml в корне репозитория. Stages, jobs, artifacts, условия по веткам - базовый набор присутствует.

Container registry. Встроенный реестр образов доступен по адресу вида registry.gitflic.ru/<org>/<project>. Docker push/pull работает через стандартный токен авторизации. Для проектов, которые собирают образы и хотят хранить их в той же цепочке - это закрывает важный пробел.

Адаптация пайплайнов: что прошло гладко

Синтаксис .gitflic-ci.yml действительно похож на GitLab CI - если писали пайплайны там, стартовый порог минимальный. Stages, переменные окружения, условия only/except по веткам работают ожидаемо. Базовый пайплайн «собрать Docker-образ, прогнать тесты, запушить в registry» занял около часа на перенос с GitHub Actions.

Секреты организованы нормально - через переменные в настройках проекта, доступны в джобах как переменные окружения. Для регистрации в собственном container registry пришлось добавить два секрета (GITFLIC_REGISTRY_USER, GITFLIC_REGISTRY_TOKEN) и подправить docker login в скриптах.

Где пришлось поработать

Actions-специфичные шаги. GitHub Actions имеет огромный маркетплейс готовых action-ов: actions/checkout, docker/build-push-action, google-github-actions/... и сотни других. В GitFlic ничего этого нет - только чистые shell-команды в блоке script. Это не катастрофа, но каждый такой action нужно разворачивать в bash-команды вручную. На нашем пайплайне таких шагов нашлось семь штук - часть заменилась тривиально, часть потребовала написать небольшие скрипты.

Скорость runner'ов. Это самый заметный момент. На GitHub Actions hosted runner - это быстрые машины с хорошим интернетом и кешированием зависимостей между джобами. GitFlic runner работает медленнее: pull образов занимает дольше, сборка образов без layer cache ощутимо медленнее. Наш пайплайн с ~8 минут на GitHub Actions вырос до ~18 минут на GitFlic при первых прогонах.

После того как добавили явное кеширование слоёв через DOCKER_BUILDKIT=1 и настроили BuildKit cache mount для зависимостей - вернулись к ~12 минутам. Не паритет, но терпимо для задач, где скорость сборки не критична.

Параллельные джобы. Ограничения на параллельный запуск джобов у GitFlic скромнее, чем у GitHub. На больших пайплайнах с матричными сборками под несколько платформ это будет узким местом. На нашем конкретном проекте - одна целевая платформа, проблемы не возникло, но стоит иметь в виду.

Container registry в работе

Registry подключился к docker push без сюрпризов. Образы хранятся, тегирование по коммиту и веткам работает как ожидается. Команды docker pull registry.gitflic.ru/... из тестовой среды клиента - без проблем.

Один нюанс: retention policy (автоудаление старых тегов) на момент нашего теста либо не работал, либо мы не нашли где его настраивать. Место в registry накапливается, если не чистить теги вручную или через скрипт в пайплайне. Добавили джоб с docker manifest + curl в API для очистки образов старше 30 дней - пока так.

Итог по переносу

Цепочка поставки теперь полностью в российской юрисдикции: код, CI/CD, образы - всё в GitFlic. Для клиентов, которым это важно по организационным или регуляторным причинам, это реальный аргумент. Платформа дошла до состояния, где можно строить на ней полноценный DevOps-процесс, а не только хранить код.

Честный минус: GitFlic не GitHub с многолетней экосистемой интеграций. Там, где GitHub Actions закрывает задачу готовым блоком, здесь надо писать скрипты. Это нормальная цена молодой платформы - но надо понимать, что несколько дополнительных дней на адаптацию пайплайнов стоит закладывать.

Клиентов, которых сопровождаем в рамках managed-услуги, переводим постепенно: сначала те, кому отечественная цепочка поставки принципиальна по требованиям, остальные - по мере созревания экосистемы.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.