v8project.yaml
Два файла
| Файл | Что хранит | Контроль версий |
|---|---|---|
v8project.yaml | Формат, наборы исходников, общие настройки инструментов и команд | Коммитится вместе с исходниками |
v8project.local.yaml | Адреса баз, учётные данные и переопределения для этой машины | Добавьте в .gitignore |
Оба файла используют YAML: вложенность задаётся пробелами. Названия ключей чувствительны к регистру. Строки соединения удобно заключать в кавычки.
Как раннер находит файл
По умолчанию читает v8project.yaml в текущем каталоге. В родительских каталогах не ищет. Другой путь задаётся через --config или переменную окружения V8TR_CONFIG; явный ключ имеет приоритет.
v8-runner --config path/to/v8project.yaml push
Локальный файл ищется рядом с выбранным основным файлом, всегда под именем v8project.local.yaml.
Относительные пути исходников и рабочего каталога считаются от каталога основного файла.
Минимальный проект с конфигурацией
workPath: .build # журналы и временные файлы раннера; можно удалить
format: DESIGNER # формат исходников: DESIGNER или EDT
source-set: # наборы исходников проекта
- name: main # локальное имя для навигации и адресации в Unica
# type: CONFIGURATION, EXTENSION,
# EXTERNAL_DATA_PROCESSORS или EXTERNAL_REPORTS
type: CONFIGURATION # основная конфигурация
path: src/cf # каталог относительно v8project.yaml
В src/cf должны лежать исходники конфигурации. Файл можно создать командой init.
Наборы исходников
workPath: .build
format: DESIGNER
source-set:
- name: main
type: CONFIGURATION # основная конфигурация
path: src/cf
- name: my-ext # локальное имя набора для навигации
type: EXTENSION # расширение конфигурации
path: src/ext
- name: tools
type: EXTERNAL_DATA_PROCESSORS # внешние обработки
path: src/epf
Состав и виды исходников подробнее описаны на странице Исходники.
Информационные базы
infobases в v8project.local.yaml задаёт адреса баз для этой машины. Каждая база имеет локальное имя. Имя origin используется, если команда не получила другой выбор.
# v8project.local.yaml
infobases: # базы этой машины
origin: # база по умолчанию
connection: "File=.local/db" # каталог файловой базы
Адрес записывает init: по умолчанию File=.local/db, иначе значение --infobase. infobase create создаёт базу по этому адресу. Команды обмена используют тот же адрес.
Несколько баз и параметры подключения
Добавьте базы под другими именами. Для файловой базы задаётся File, для серверной — Srvr и Ref. standalone задаёт подключение к автономному серверу.
Для кластерной базы учётные данные разделены на три уровня: user/password — пользователь информационной базы; cluster.user/password — администратор кластера; cluster.agent.user/password — администратор центрального сервера. У центрального сервера и кластера отдельные списки администраторов (документация платформы).
# v8project.local.yaml — не коммитится
workPath: .build
infobases: # базы проекта, как remote у репозитория
origin: # умолчание, как у гита
connection: "File=.local/db"
test:
connection: "Srvr=srv;Ref=erp_test"
prod:
connection: "Srvr=srv;Ref=erp"
user: deploy # пользователь информационной базы
cluster: # для sessions и создания базы в кластере
ras: "srv:1545" # уже поднятый; без ключа раннер поднимет ras сам
user: clusteradmin # имя администратора кластера
password: "cluster-password" # пароль администратора кластера
agent: # центральный сервер
user: "serveradmin" # имя администратора центрального сервера
password: "server-password" # пароль администратора центрального сервера
ci:
connection: "Srvr=ibsrv;Ref=demo" # прямой шлюз автономного сервера
standalone: # объявляет вид цели
gate: "ibsrv:1543" # SSH-шлюз: агентский набор без платформы у раннера
exchange: sftp
Команда принимает --infobase с именем базы или строкой соединения целиком. Строка в ключе позволяет передать адрес из задания сборки без правки файла. Если origin не объявлен, команда требует выбрать базу: init --infobase … или --infobase <имя>.
v8-runner push # в origin
v8-runner push --infobase test # в именованную базу
v8-runner apply --infobase prod --sessions force
v8-runner pull --infobase "Srvr=ci;Ref=job-417" # адрес без правки файла
v8-runner status --all # все объявленные базы
HTTP-адрес базы
У базы два адреса: connection нужен для операций с базой, web.url — для открытия опубликованной базы в браузере или тонком клиенте.
# Фрагмент v8project.local.yaml
infobases:
origin:
connection: "Srvr=srv;Ref=demo" # подключение к кластерной базе
web:
url: https://srv.example/demo # адрес веб-публикации
v8-runner launch web # открыть в браузере
v8-runner launch thin --via web # открыть тонким клиентом по веб-адресу
web.url задаётся отдельно от connection; его нельзя подставлять вместо строки соединения. Для файловой и кластерной базы нужна веб-публикация. У автономного сервера адрес задаётся по настройкам его встроенного веб-сервера.
Две публикации одной базы — например, demo и demo_int — показаны в примере именованных веб-публикаций План. Именованные публикации объявляются внутри одной базы в web.publications.
Параметры публикации
Чтобы раннер мог опубликовать базу на Apache или IIS, добавьте параметры веб-сервера в ту же секцию web.
# Фрагмент v8project.local.yaml — пример для Apache 2.4
infobases:
origin:
connection: "Srvr=srv;Ref=demo"
web:
server: apache24 # веб-сервер: iis, apache2, apache22 или apache24
wsdir: demo # имя виртуального каталога
dir: /var/www/demo # существующий каталог публикации
url: https://srv.example/demo # адрес для открытия базы
server, wsdir и dir нужны команде web publish; url — команде launch. Для apache2 и apache22 также нужен conf — путь к файлу конфигурации Apache. На платформе 8.5.4 и новее apache22 нет, см. версии платформы. Для IIS можно задать os-auth: true — аутентификацию средствами ОС.
v8-runner web publish
Инструменты
tools задаёт поиск и запуск внешних утилит. Например, tools.platform настраивает поиск платформы 1С. tools.postgres.path называет каталог сборки PostgreSQL для 1С, которую поднимает dbms.
Выбор платформы План
Выберите один способ: version — поиск подходящей установленной платформы, path — использование платформы по указанному пути.
# Фрагмент v8project.yaml
workPath: .build
tools: # внешние инструменты
platform: # платформа 1С
version: "8.3.27" # версия для автоматического поиска
Альтернативный вариант — явный путь:
# Альтернативный фрагмент v8project.yaml — пример для Linux
workPath: .build
tools:
platform:
path: /opt/1cv8/x86_64/8.3.27.2074 # каталог установленной платформы
Если оба поля отсутствуют, раннер ищет установленную платформу автоматически. Если после объединения основного и локального файлов заданы и path, и version, это ошибка конфигурации. Локальный path не отменяет version из основного файла.
Поддерживаемые версии платформы План
Минимальная версия платформы — 8.3.24. Платформу ниже раннер не запускает: команда, и её превью тоже, отказывает с кодом environment_unavailable и называет путь, найденную версию и минимум. Проверка идёт до запуска, потому что старая платформа может не отвергнуть незнакомую команду, а открыть окно и не завершиться, а срока у команды нет. Команды, которые платформу не запускают, например init и status без --deep, от версии не зависят.
Два ответа устроены иначе. status --deep — диагностика: он отвечает успехом, платформу не запускает, а причину называет в ответе о базе. push без памяти о базе отказывает кодом untracked_base, а причина стоит в skipped; push --force отказывает с environment_unavailable.
Версию раннер видит в пути установки, например /opt/1cv8/x86_64/8.3.27.2074/bin/1cv8, и запускать платформу ради ответа о версии не станет. Если версии в пути нет, отказа не будет, и платформа ниже минимума может зависнуть, поэтому указывайте каталог версии. Подключённый агент (attached) и SSH-шлюз автономного сервера не используют утилиты на машине раннера: их версию раннер не видит, и минимум к ним не применяется.
Выше минимума команды и исполнители те же. Различия по версиям:
| Версия | Что меняется | Что делает раннер |
|---|---|---|
| ниже 8.3.24 | Ни у одного исполнителя нет ключа частичной загрузки | Платформа не запускается, ответы описаны выше |
| 8.3.24–8.3.26 замер | Агент при восстановлении из .dt просит подтвердить свой перезапуск | infobase restore выполняет Конфигуратор, агент попадает в skipped с причиной. Если агент назначен ключом providers.infobase.restore, команда отказывает и другого исполнителя не берёт |
| 8.3.24–8.3.26 замер | Управляемый агент запускается около 46 с, на 8.3.27 — около 5 с (Windows, файловая база) | Результат тот же, команда идёт дольше на время запуска каждой сессии |
| 8.5.4 и новее | webinst больше не знает -apache22 | web publish с apache22 отказывает и называет apache24 |
Версия формата выгрузки зависит от версии платформы замер:
| Платформа | 8.3.24 | 8.3.25 | 8.3.26 | 8.3.27 | 8.5.1 | 8.5.4 |
|---|---|---|---|---|---|---|
| Формат | 2.17 | 2.18 | 2.19 | 2.20 | 2.21 | 2.22 |
Платформа загружает формат не новее своего, поэтому исходники с более новой платформы на более старую не переносятся: отказ называет обе версии.
Исполнители операций
providers выбирает, какой инструмент исполнит операцию. Ключ называется именем команды: например, providers.push — исполнитель отправки исходников.
# Фрагмент v8project.yaml
workPath: .build
providers: # явно выбранные исполнители операций
push: designer # отправка через Конфигуратор
pull: designer # выгрузка через Конфигуратор
Если ключ не задан, раннер выбирает исполнителя сам. Если задан — использует только указанного исполнителя, без переключения на другого. Для check ветка определяется форматом проекта.
У файловой базы без ключа push и pull выбирают исполнителя ещё и по объёму операции. Когда каждый набор команды идёт целиком — push --force или --full, pull --force, загрузка без снимка, выгрузка без годного файла версий, — первым идёт ibcmd: целиком он выгружает и загружает быстрее. Остальные операции, в том числе команда, где хоть один набор идёт по изменившемуся, начинает агент. Подключённый агент (tools.designer_agent.attach), кластер и автономный сервер выбирают как прежде. Ответ называет выбор полем reason квитанции исполнителя. После полной загрузки через ibcmd раннер записывает файл версий, и следующий pull идёт по изменившемуся.
| ключ | чем управляет |
|---|---|
providers.push | отправкой исходников в базу |
providers.pull | выгрузкой из базы |
providers.apply План | применением к базе данных |
providers.reset План | откатом основной конфигурации к базе данных |
providers.upload | пакетом в базу |
providers.download | пакетом из базы |
providers.diff | списком изменений файловой базы. Отчёт сравнения формирует designer. |
providers.make | сборкой пакета |
providers.convert План | преобразованием пакета в XML и обратно |
providers.extensions | работой со свойствами расширений |
providers.infobase.createproviders.infobase.dumpproviders.infobase.restore | действиями с базой целиком |
Настройки операций
Отправка исходников
При наличии снимка исходников push загружает изменения частично. Порога числа файлов нет. Полная загрузка остаётся без снимка, по push --full и push --force, при первой отправке после создания базы в кластере или копирования базы, для расширений формата EDT, при небезопасном пути и когда удаление нельзя подтвердить по корневому описанию: например, удалён только модуль, справка или содержимое макета. Ключ push.partialLoadThreshold отклоняется при чтении обоих файлов проекта.
Тесты
tests хранит настройки YAxUnit и Vanessa Automation. Общий таймаут выполнения задаётся в секундах; параметры конкретных инструментов лежат в tests.yaxunit и tests.va.
# Фрагмент v8project.yaml
workPath: .build
tests: # настройки тестовых инструментов
execution_timeout_seconds: 300 # таймаут выполнения, секунды
Локальные переопределения
Общие настройки хранятся в v8project.yaml, настройки этой машины — в v8project.local.yaml рядом с ним. Раннер сначала читает основной файл, затем локальный.
Вложенные карты объединяются по ключам: локальное значение заменяет одноимённое основное, остальные значения сохраняются. Значения других типов, включая списки, заменяются целиком.
Локальный файл может переопределять workPath, localPath, providers, tools и tests, а также объявлять infobases. Он не может менять format и source-set: это общие свойства проекта.
Личное состояние копии
workPath пересобирается: его можно удалить. Всё, что пересобрать нельзя, лежит в localPath — по умолчанию .local рядом с v8project.yaml: данные стендов, которые поднимает раннер (dbms, cluster, standalone), и файловая база по умолчанию .local/db. Раннер кладёт в каталог .gitignore со строкой *; в .gitignore проекта можно добавить /.local/. localPath не может содержать каталог проекта или набор исходников и не пересекается с workPath.
Память о базе — хеши исходников, поколение и файл версий — тоже лежит в localPath, в localPath/infobases/<база>/. После удаления workPath стенды, база и память о ней целы: следующий push идёт по изменившемуся. Без памяти о базе — например, если стереть localPath/infobases/<база> — push отказывает с untracked_base и в error.next называет, как восстановить связь.
Исполнитель отправки
Режим полной загрузки задаёт аргумент push --full. В локальном файле можно выбрать исполнителя через providers.push.