Чёрный пояс 1С. 1C:SRE-Suite: проект вышел в открытый репозиторий и обзавёлся CI на GitHub Actions
Инструменты, которые мы уже разбирали в статьях о промышленном DevOps для 1С на Linux и об AdminClusterMonitor, собраны их автором в единый открытый репозиторий 1C:SRE-Suite под лицензией MIT - и на этой неделе обзавелись конвейером непрерывной интеграции на GitHub Actions. Разбираем, что изменилось: структуру репозитория, YAML-пайплайн CI, три инженерных решения для запуска 1С внутри Docker (сетевые лицензии HASP, изоляция параллельных сборок, секреты) и планы автора по ИИ-агентам для эксплуатации 1С.
1c-ci-linux-build-v4.sh и мягкую ротацию rphost мы разбирали в статье «Промышленный DevOps для 1С на Linux»; внешнюю оркестрацию «перестарков» кластера - в статье «AdminClusterMonitor». Здесь эти инструменты уже не отдельные скрипты, а часть одного публичного репозитория с готовым CI - разбираем именно то, что появилось нового.
📂 Что изменилось: единый репозиторий
Ранее рассмотренные инструменты - сборочный скрипт, мост EDT ↔ Конфигуратор, оркестратор rphost и конфигурации логирования/лицензирования - теперь опубликованы вместе в одном репозитории NickScherbakov/1c-sre-suite под лицензией MIT:
Новое в этом релизе - именно каталог CI: конфигурация github-actions-ci.yml, которая запускает уже знакомый по прошлому разбору сборочный скрипт автоматически на каждый push и pull request.
⚙️ Конвейер CI: разбор шагов
Рабочий процесс GitHub Actions активируется на push и pull_request в ветки main/master:
| Этап | Действие | Регламент |
|---|---|---|
| 1. Checkout | Полное извлечение репозитория с историей коммитов. | actions/checkout@v4 с fetch-depth: 0 - без полной истории пятый рубеж защиты (сверка метаданных с Git) не может посчитать diff. |
| 2. Node.js | Подготовка рантайма для CLI-транслятора EDT. | actions/setup-node@v4, версия 20; npm ci запускается только если в репозитории есть package.json. |
| 3. Сборка раннера | Компиляция headless-образа Docker. | docker build -t 1c-sre-runner:latest ./docker из уже описанного ранее Dockerfile. |
| 4. Прогон сборки | Запуск пяти рубежей защиты внутри контейнера. | docker run с --net=host и переменными RUN_ID/HASP_SERVER_IP - разбор ниже. |
🛠️ Три инженерных решения для Docker и 1С
Запуск платформы «1С:Предприятие» внутри контейнера на чужом раннере упирается в три типовых препятствия. Вот как их решает конвейер:
| Проблема | Типовая уязвимость Docker | Решение |
|---|---|---|
| Сетевые лицензии HASP | Широковещательные UDP-запросы не проходят сквозь виртуальный сетевой мост (bridge) Docker. | Параметр --net=host: контейнер использует сетевой стек хоста напрямую, без потери broadcast-пакетов. |
| Параллельные сборки | Несколько одновременных запусков конфликтуют за файлы блокировок (*.1cLck, 1Cv8.lk) и временные базы. | Переменная RUN_ID на основе github.run_id создаёт изолированные каталоги и БД под каждый запуск. |
| Секреты в публичном репозитории | IP-адрес сервера лицензий, попавший в код или лог сборки, - утечка внутренней инфраструктуры. | GitHub Secrets: значение HASP_SERVER_IP подставляется во время выполнения, маскируется в логах и на лету записывается в nethasp.ini. |
--net=host убирает сетевую изоляцию контейнера от хоста - это осознанный компромисс ради совместимости с broadcast-обнаружением HASP, а не универсальная рекомендация для любого Docker-конвейера. На инфраструктуре с более строгими требованиями к сетевой изоляции стоит сначала проверить, работает ли лицензирование в режиме прямого IP-адреса (как в nethasp.ini из первого разбора) без --net=host.
🤖 Планы автора: ИИ-агенты для эксплуатации 1С
Автор проекта заявляет автоматизацию сборок и ротацию процессов лишь первой фазой: следующим шагом заявлена разработка специализированных ИИ-агентов для обслуживания инфраструктуры 1С - MCP-сервер для безопасного доступа моделей к метаданным и кластеру, ИИ-дежурный, сопоставляющий аномалии технологического журнала с конкретным BSL-кодом, и автоматическая генерация патчей с Pull Request при обнаружении утечек памяти. Это заявленные планы, а не готовый код - в репозитории на момент публикации есть только сборочный конвейер и оркестратор rphost; конкретных сроков или прототипа MCP-сервера автор пока не публиковал.
🤝 Как принять участие
Автор называет приоритетными направлениями для CI/CD-модулей прямо сейчас:
- кэширование слоёв Docker для ускорения повторной сборки раннера;
- публикацию результатов синтаксического контроля в формате JUnit для отчётов прямо в интерфейсе Git;
- интеграцию headless-автотестов Vanessa-Automation и YAxUnit сразу после успешной сборки.
Файл github-actions-ci.yml доступен в репозитории и легко адаптируется под GitLab CI, TeamCity или Jenkins.
Проект распространяется под лицензией MIT: свободное использование, доработка и внедрение в инфраструктуру своего предприятия.
Перейти в репозиторий NickScherbakov/1c-sre-suite на GitHub →
Редакция следит за развитием открытых проектов для эксплуатации 1С на Linux и рассказывает о значимых обновлениях по мере их появления.