v8-runner

Словарь

базаинформационная база 1С: конфигурации и данные, с которыми работают пользователи. Бывает файловой, в кластере или за автономным сервером; у проекта сколько угодно именованных баз, умолчание зовётся origin, как у гита
исходникита же конфигурация, разложенная в файлы под контролем версий
набор исходниковкаталог с одним предметом: конфигурация, расширение или группа внешних обработок
пакетодин файл с предметом: .cf, .cfe, .epf, .erf
выгрузкабаза → исходники
загрузкаисходники → база
применениеосновная конфигурация → конфигурация базы данных
исполнительинструмент или точка входа, которыми выполняется операция; роли и ограничения перечислены в списке инструментов
workPathрабочий каталог раннера: журналы, временные файлы и то, что раннер пересчитает сам. Его можно удалить
localPathличное состояние рабочей копии, которое без базы не пересобрать: память о том, на чём остановились, отдельная для каждой базы, стенды, которые поднял раннер, и файловая база по умолчанию. По умолчанию .local рядом с v8project.yaml; удаление workPath его не задевает
квитанцияответ команды: что сделано, чем, что пропущено. Текстом или JSON
превью--dry-run: показать план, ничего не делая

Инструменты и сервисы

Раннер запускает утилиты, подключается к точкам входа и использует компоненты внутри клиента 1С. В таблицах указано, что делает каждый инструмент и как раннер с ним взаимодействует.

Утилиты и приложения

ИнструментЧто этоКак использует раннер
1cv8 DESIGNERКонфигуратор 1С в пакетном режиме: административные операции с базой и конфигурацией.Запускает процесс на операцию, передаёт аргументы, читает результат и журнал. Возможности зависят от команды и режима базы.
1cv8 /AgentModeКонфигуратор в режиме агента: точка входа для машинных команд по SSH.Запускает собственный агент либо подключается к уже работающему. Собственным процессом управляет; подключённый внешний агент не завершает. SSH-клиент встроен в раннер.
1cv8 ENTERPRISEТолстый клиент 1С, выполняющий приложение и внешние обработки.Запускает клиент для работы пользователя, тестов, внешней обработки или клиентского MCP. Ожидание завершения и управление процессом зависят от варианта запуска.
1cv8cТонкий клиент 1С.Запускает клиент по строке подключения или по веб-адресу через HTTP/HTTPS. Способы запуска описаны в launch.
ibcmdУтилита администрирования информационной базы из поставки платформы 1С.Запускает на операцию. Утилита работает с файловой базой или напрямую с СУБД по dbms; кластерная строка подключения для прямого доступа не используется. До прямой работы серверные процессы, обслуживающие эту базу, должны быть остановлены: кластер или ibsrv. СУБД остаётся запущенной. См. условия работы с кластерной базой.
1cedtcliКомандная строка 1C:Enterprise Development Tools (EDT).Импортирует и экспортирует проекты EDT, проверяет исходники. Работает с проектами и рабочей областью EDT; раннер запускает разовую команду или управляет своей интерактивной сессией.
webinstУтилита платформы 1С для веб-публикации базы на Apache или IIS.Запускает локально для создания или удаления публикации, записи default.vrd и настройки веб-сервера. Нужен доступ к каталогу и требуемой конфигурации веб-сервера. См. web publish.
gitСистема контроля версий исходников.Запрашивает правила игнорирования и состояние локальных файлов, чтобы оценить риск потери работы перед заменой каталога. Раннер не создаёт коммиты и не отправляет изменения в Git; работа без Git возможна.
Браузер и обработчик ссылок ОСПриложение по умолчанию для открытия веб-адреса.launch web передаёт URL системе: open на macOS, xdg-open на Linux, rundll32.exe на Windows. Раннер не управляет вкладками и не проверяет доступность публикации при таком открытии.

Серверы и внешние сервисы

КомпонентЧто этоКак используется
Кластер 1С: ragent, rmngr, rphostАгент сервера, менеджер кластера и рабочие процессы, обслуживающие информационные базы.К базе через кластер подключаются Конфигуратор, агент и клиенты 1С. Кластер запускаете вы — службой или из консоли, и тогда раннер его процессы не трогает, — или раннер на своей машине Windows командой cluster start.
PostgreSQL для 1ССборка PostgreSQL для платформы: initdb, pg_ctl, postgres, pg_isready, psql.СУБД вы поднимаете сами, и тогда раннер только идёт в неё по адресу из dbms. При dbms.managed раннер запускает её на своей машине Windows командой dbms start из каталога tools.postgres.path.
ibsrvАвтономный сервер 1С: обслуживает базу, предоставляет прямой шлюз, агентский SSH-шлюз и HTTP-доступ.Раннер использует SSH-шлюз; Конфигуратор и тонкий клиент могут подключаться по прямому шлюзу, клиенты — по HTTP. Сервер поднимаете вы, и тогда раннер его процесс не трогает, или раннер на своей машине командой standalone start. См. варианты подключения.
Apache с модулем wsapВеб-сервер и модуль расширения 1С, обслуживающие веб-публикации.Публикацию настраивает webinst; браузер и тонкий клиент открывают её по HTTP/HTTPS. Веб-сервер соединяется с базой через модуль 1С. Раннер не запускает и не останавливает Apache.
IIS с модулем wsisapiВеб-сервер Windows и модуль расширения 1С для веб-публикаций.Для публикации используется webinst, для открытия — веб-адрес. Запуском и остановкой IIS раннер не управляет. Готовую публикацию можно открыть без права менять её: достаточно web.url.
СУБДСервер базы данных, в котором хранится информационная база серверного варианта.С СУБД работает кластер, ibsrv или ibcmd при прямом доступе. Раннер передаёт настройки dbms утилите; собственного SQL-драйвера для этих операций нет. Запуском и остановкой СУБД раннер не управляет.
GitHub ReleasesСервис публикации выпусков и файлов внешних инструментов.tools download запрашивает выпуск и скачивает готовый артефакт или архив исходников. Запросы выполняет встроенный HTTP-клиент раннера.

Компоненты внутри клиента 1С

ИнструментЧто этоКак использует раннер
YAxUnitРасширение 1С для выполнения модульных тестов.Может скачать расширение или его исходники. Для test yaxunit подготавливает компоненты и параметры, запускает клиент 1С, затем читает JUnit и журналы. Загрузка файлов и установка расширения в базу — отдельные действия.
Vanessa Automation SingleВнешняя обработка .epf для сценарных тестов и автоматизации клиента 1С.Может скачать обработку, передаёт ей настройки и запускает внутри клиента для test va или launch mcp va. Это компонент платформенного клиента, а не отдельная программа ОС.
onec-client-mcp-devkitРасширение, предоставляющее MCP-инструменты из клиента 1С.Скачивает артефакт или исходники, подготавливает расширение для клиентского MCP и запускает клиент. При --wait-ready проверяет готовность MCP по HTTP. У Vanessa в режиме MCP есть собственная точка входа, проверяемая тем же механизмом.

Администрирование кластера и работа с пакетами

ИнструментЧто этоВзаимодействие с раннером
rac ПланКонсольная утилита администрирования кластера 1С через RAS.Управление сеансами своей базы: список, завершение и блокировка начала. Администрирование серверов, лицензий и профилей безопасности остаётся за пределами раннера.
ras ПланСервер администрирования кластера 1С, к которому обращается rac.Объявленный cluster.ras используется как готовый сервис: его запуск и остановка из раннера недоступны. Если адрес не задан, раннер запускает собственный RAS на своей машине на время команды и завершает его вместе с ней. У кластера, который запустил раннер, RAS работает вместе с кластером до cluster stop. См. варианты RAS.
ibcmd-rs ПланОтдельный конвертер между XML-исходниками и пакетом конфигурации без платформы 1С.Раннер запускает его для преобразования исходников и пакетов. Совпадение части имени с ibcmd не делает утилиты взаимозаменяемыми.

SSH, SFTP и HTTP — протоколы взаимодействия. Для агентского доступа и SFTP раннер использует встроенный клиент; внешние команды ssh и sftp не требуются. Docker относится к размещению серверов: раннер не вызывает Docker CLI. EDT IDE используется для разработки проектов; раннер обращается к 1cedtcli.

Режимы доступа к базе

Под вариантами команд эти значки показывают, как база обслуживается и что команда делает в каждом режиме. Рядом со значком всегда стоит название режима.

Файловая
База хранится в каталоге с файлом 1Cv8.1CD. Для доступа к ней не нужны кластер или автономный сервер. Варианты файловой базы.
Кластер
Базу обслуживает кластер серверов 1С; данные хранятся в СУБД. Варианты кластера.
Автономный
Базу обслуживает автономный сервер ibsrv. Она может храниться в файле или в СУБД. Варианты автономного сервера.

Значок обозначает режим доступа, а не утилиту команды. Вызов ibcmd сам по себе не делает базу автономной. Прямой доступ к СУБД описывается отдельно, вместе с условиями остановки обслуживающего базу сервера.

Форматы исходников

Формат задаёт, как исходники хранятся в проекте. Он выбирается ключом format в v8project.yaml и сочетается с любым режимом доступа к базе.

Конфигуратор
XML-формат выгрузки платформы. В проекте — format: DESIGNER.
EDT
Формат проекта 1C:Enterprise Development Tools. В проекте — format: EDT. Обмен с базой проходит через XML-формат платформы (108).

Исполнитель команды выбирается отдельно от формата исходников. Подробнее — «Исходники и база».

Как читать схемы

Схемы нарисованы в нотации ArchiMate, уровень технологий: рамка — машина (node), прямоугольник — процесс (system software), скруглённый блок — точка входа (technology service), «документ» и цилиндр — данные (artifact), синий блок — сам раннер (application component). Подпись на стрелке называет канал и протокол; пунктир — сеть, сплошная — процесс или файл на той же машине. Серое — то, с чем раннер не разговаривает.

Операции платформы раннер поручает исполнителям. Утилиту он вызывает запуском процесса — аргументы командной строки, код выхода и журнал; с агентом и шлюзом говорит сессией SSH. Поэтому на стрелке от раннера стоит вид вызова, а не имя команды. Где раннер поднимает процесс сам, у стрелки написано «поднимает»: агент Конфигуратора он запускает и только потом к нему подключается, а шлюз автономного сервера работает вне раннера — туда идёт одна сессия. Сервер администрирования работает по тому же правилу: объявленный раннер использует, необъявленный поднимает сам.

Ответы команд

На странице каждой CLI-команды перечислены её классы результатов: выполнено, запланировано, пропущено, получено с предупреждением или не выполнено. Не каждый класс возможен у каждой команды. Сообщения платформы и пути могут различаться; классы и поля ответа позволяют понять исход.

Как читать CLI и JSON

В JSON ok сообщает об исходе всей команды. data содержит её результат, warnings — предупреждения, steps — шаги, error — причину неуспеха. У выполнения может быть отдельный data.execution.status: succeeded, failed, cancelled, timed_out или invalid_output.

Статус шага — другой уровень: succeeded, failed, skipped или degraded. Последний означает выполненный шаг с ухудшением/предупреждением, а не универсальный статус команды. Нельзя заменять предметные статусы clean, issues_found, up_to_date или planned одним этим перечнем.

В тексте итоговые знаки означают: ● выполнено, ▲ выполнено с предупреждениями, ✖ не выполнено, ○ пропущено. ◌ относится к текущему ходу работы, не к окончательному ответу. Последний отказ печатается в stderr как ERROR: ….

Отказ до работы и ошибка после начала

Ранний отказ может вернуть в data только {"message": "…"}. Когда сценарий уже получил предметный результат, ошибка сохраняет его собственную форму: выполненные шаги, опубликованные файлы, исход проверки, отчёт или пути журналов. Некоторые команды сохраняют форму операции даже при раннем отказе. ok: false не обещает, что ничего не изменилось.

Предупреждение не равно отказу: ok может оставаться true. У отдельных команд предупреждения находятся в data.message, журнале или диагностике исполнения, а не только в общем warnings. Превью тоже успешно, но работу не выполняет. provider_dispatched и PID читайте по правилам конкретного метода: они не заменяют его фактические статусы шагов и проверку готовности.

Причины отказов

error.kind группирует причину, error.code уточняет её. Код ошибки отдельного шага в data.execution.errors[].code принадлежит другому словарю. Коды выхода 2/3/4 относятся к CLI; код выхода внешней утилиты в data может отличаться.

Причина и кодРод и выход CLIСмысл
Неверные настройки или ключи
invalid_argument
validation
Выход: 2
Запрос не прошёл проверку.
Значение не поддерживается
unsupported_value
validationЗначение ключа или настройки не входит в допустимый набор для выбранной операции.
Набор скрыт правилами git
source_set_ignored_by_git
validation
Выход: 2
Правило игнорирования git прячет файл набора исходников: раннер не видит его изменений.
workPath на другом томе
work_path_on_another_volume
validation
Выход: 2
pull: каталог набора и workPath лежат на разных томах, и выгрузку нельзя опубликовать переименованием; ничего не записано.
Операция недоступна
capability_unavailable
capability
Выход: 2
Нет подходящего способа выполнить операцию.
Живой агент выключен
live_agent_off
capability
Выход: 2
agent hold при tools.designer_agent.live: false: раннер не держит живого агента.
Неподходящий предмет
subject
capability
Выход: 2
Операция неприменима к выбранному предмету, например к внешней обработке вместо конфигурации.
Неподходящая цель
target
capability
Выход: 2
Операция не выполняется для этой цели. error.next может назвать подходящую команду.
Среда недоступна
environment_unavailable
environment
Выход: 2
Не найдена требуемая утилита или среда не подготовлена.
Нет выпуска платформы
platform_release_missing
environment
Выход: 2
Нужной версии платформы на машине нет. Отказ называет запрошенный выпуск в platform_release и найденные установки.
Предел живых агентов
agent_limit
environment
Выход: 2
agent hold: все живые агенты на пределе live-max удерживаются. Обычная команда в этом случае не отказывает, а работает с разовым агентом.
Раннер в Job
live_agent_job
environment
Выход: 2
agent hold: раннер запущен в Job, из которого нельзя выйти, и живой агент умер бы вместе с ним.
Рабочий каталог занят
workspace_busy
workspace
Выход: 3
Другой вызов владеет workPath; этот вызов не начинает работу.
Файловая база занята
infobase_busy
workspace
Выход: 3
Другой вызов владеет файловой базой; этот вызов не начинает работу. Дождитесь завершения владельца базы и повторите команду.
В базе есть сеансы
infobase_sessions
workspace
Выход: 3
Операции нужна база без сеансов, а в ней работают; sessions перечисляет их.
База открыта в Конфигураторе
infobase_designer_busy
workspace
Выход: 3
Базу держит открытый Конфигуратор; sessions называет его. Закройте его или освободите живого агента (agent release).
Сбой платформы или внешнего инструмента
platform_failure
platform
Выход: 4
Ошибка запуска, ненулевой выход либо другой сбой внешнего исполнения.
Команда агента брошена
agent_command_abandoned
platform
Выход: 4
Второй сигнал бросил ожидание итога команды внешнего агента: агент мог её ещё выполнять, конец не подтверждён.
Результат не подтверждён
invalid_output
invalid_output
Выход: 4
Ожидаемый файл или машинный ответ не получен либо невалиден.
Ошибка выполнения сценария
runtime_failure
runtime
Выход: 3
Сбой файловой системы, сети, публикации результата или другой шаг оркестрации; некоторые проверки возвращают этот же род.
Операция отменена
cancelled
interruption
Выход: 4
Терминальное прерывание; данные могут содержать уже выполненные шаги.
Истёк срок выполнения
timed_out
interruption
Выход: 4
Терминальное прерывание по сроку. У отдельных ожиданий предметный результат может оформляться как runtime_failure.
План База ушла вперёд
non_fast_forward
non_fast_forwardКонтроль поколений отказывается перезаписать непринятые изменения базы.
План Нет памяти обмена
untracked_base
untracked_baseДля решения об обмене не хватает сохранённого состояния базы.

Диагностика до ответа команды

Неизвестная команда, неизвестный ключ или ошибка синтаксиса аргументов возникают в парсере CLI до сценария. Парсер печатает диагностику и Usage, завершает процесс с кодом 2; JSON-конверт при этом не обещается. Это отличается от проверок глобальных ключей после разбора: они уже могут вернуть общий конверт отказа, даже для version.

Ошибка загрузки проекта после разбора команды оформляется общим отказом. Если сам раннер не удалось запустить или записать ответ, это сбой запуска/вывода процесса; ответа команды может не быть.

Примеры общих отказов

Это примеры формы CLI/JSON для разных причин. Они не обещают, что каждая команда выдаёт каждую причину; применимость указана на её странице.

Примеры

Неверные настройки или ключи

ERROR: validation error: Неверные настройки или ключи

Операция недоступна

ERROR: capability unavailable: Операция недоступна

Неподходящая цель

ERROR: capability unavailable: the operation is not available for this target

Среда недоступна

ERROR: environment unavailable: required utility was not found

Рабочий каталог занят

ERROR: workspace busy: workPath is locked by another command

Файловая база занята

ERROR: infobase busy: file infobase is locked by another command

Сбой платформы или внешнего инструмента

ERROR: platform error: Сбой платформы или внешнего инструмента

Результат не подтверждён

ERROR: invalid output: Результат не подтверждён

Ошибка выполнения сценария

ERROR: runtime error: Ошибка выполнения сценария

Операция отменена

ERROR: cancelled: Операция отменена

Истёк срок выполнения

ERROR: timed out: Истёк срок выполнения