Чёрный пояс 1С. 1C:SRE-Suite: CI на GitHub Actions | infolimp.ru

Чёрный пояс 1С. 1C:SRE-Suite: проект вышел в открытый репозиторий и обзавёлся CI на GitHub Actions

3 сентября 2026 · infolimp.ru · Чёрный пояс 1С

Инструменты, которые мы уже разбирали в статьях о промышленном 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 - разбираем именно то, что появилось нового.
Оглавление:
  1. Что изменилось: единый репозиторий
  2. Конвейер CI: разбор шагов
  3. Три инженерных решения для Docker и 1С
  4. Планы автора: ИИ-агенты для эксплуатации 1С
  5. Как принять участие

📂 Что изменилось: единый репозиторий

Ранее рассмотренные инструменты - сборочный скрипт, мост EDT ↔ Конфигуратор, оркестратор rphost и конфигурации логирования/лицензирования - теперь опубликованы вместе в одном репозитории NickScherbakov/1c-sre-suite под лицензией MIT:

Структура репозитория - NickScherbakov/1c-sre-suiteTree
1c-sre-suite/
├── .github/workflows/     # Новое: конвейер CI (github-actions-ci.yml)
├── scripts/
│   ├── 1c-ci-linux-build-v4.sh    # 5 рубежей защиты от "тихого" успеха сборки
│   └── edt-to-configurator.js     # CLI-мост трансляции проектов EDT → .cf/.cfe
├── orchestrator/
│   ├── admincluster_run.sh        # Внешний менеджер мягкой ротации rphost
│   ├── admincluster-monitor@.service
│   └── admincluster-monitor@.timer
├── config/
│   ├── logcfg.xml                 # Профиль технологического журнала
│   └── nethasp.ini                # Конфигурация сетевого HASP без broadcast
└── docker/
    └── Dockerfile                 # Headless-образ сборочного раннера (Xvfb + шрифты)

Новое в этом релизе - именно каталог 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 - разбор ниже.
YAML - .github/workflows/github-actions-ci.yml (ключевые шаги)
name: 1C:SRE-Suite CI

on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]

jobs:
  syntax-check:
    runs-on: ubuntu-latest
    steps:
      - name: Получение исходников
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Развертывание Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Установка зависимостей EDT-моста
        run: |
          if [ -f package.json ]; then npm ci; fi

      - name: Сборка Docker-образа
        run: |
          docker build -t 1c-sre-runner:latest ./docker

      - name: Запуск проверки внутри контейнера
        env:
          RUN_ID: ${{ github.run_id }}
          HASP_SERVER_IP: ${{ secrets.HASP_SERVER_IP }}
        run: |
          docker run --rm \
            --net=host \
            -v ${{ github.workspace }}:/workspace \
            -w /workspace \
            -e RUN_ID="$RUN_ID" \
            -e HASP_SERVER_IP="$HASP_SERVER_IP" \
            1c-sre-runner:latest \
            bash scripts/1c-ci-linux-build-v4.sh

🛠️ Три инженерных решения для 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-модулей прямо сейчас:

Файл github-actions-ci.yml доступен в репозитории и легко адаптируется под GitLab CI, TeamCity или Jenkins.

Проект распространяется под лицензией MIT: свободное использование, доработка и внедрение в инфраструктуру своего предприятия.

Перейти в репозиторий NickScherbakov/1c-sre-suite на GitHub →


Редакция следит за развитием открытых проектов для эксплуатации 1С на Linux и рассказывает о значимых обновлениях по мере их появления.