Skip to content

Файл настроек (autumn-properties.json)

Значения опций и аргументов команд можно задавать в файле autumn-properties.json в рабочем каталоге, из которого запускается vrunner (как правило, корень проекта). Всё, что в нём задано, подставляется в незаполненные опции команды.

Формат файла

Ключи лежат в секции vrunner. Ключ - имя опции из справки команды без -- (src, db-user, ibcmd); позиционный аргумент (OUT, SRC, IN, TESTSPATH) - его имя в нижнем регистре. Значения можно задавать для всех команд сразу, для группы или для конкретной команды:

json
{
  "vrunner": {
    "<опция>": "<значение>",
    "<группа>": {
      "<опция>": "<значение>",
      "<подкоманда>": {
        "<опция>": "<значение>"
      }
    }
  }
}

Поиск идёт от команды к корню: для vrunner cf compile --src проверяются vrunner.cf.compile.src, затем vrunner.cf.src, затем vrunner.src. Флаги задаются как true/false, повторяемые опции (--report-format) - массивом.

Схема для редактора

К каждому релизу прилагается JSON Schema файла настроек vrunner-settings-schema.json: она строится по опциям команд и знает все ключи, их типы и допустимые значения. Ключ $schema включает подсказки и проверку в редакторе:

json
{
  "$schema": "https://github.com/vanessa-opensource/vanessa-runner/releases/latest/download/vrunner-settings-schema.json",
  "vrunner": {
    "ibconnection": "/F./build/ib"
  }
}

Приоритеты

От высшего к низшему:

  1. Аргументы и опции командной строки.
  2. Переменные окружения опций (VRUNNER_*).
  3. Файл из опции settings (см. ниже).
  4. autumn-properties.json в рабочем каталоге.
  5. Значения по умолчанию из пакета vanessa-runner.

Настройки из файлов заполняют только те опции, которые не заданы в командной строке и переменных окружения.

Опция settings

settings - глобальная опция, доступная всем командам. Задаётся в командной строке (--settings <файл> или --settings=<файл>), переменной окружения VRUNNER_SETTINGS или ключом settings на верхнем уровне секции vrunner (внутри групп и команд ключ не действует). Значение - путь к ещё одному файлу с теми же ключами; он накладывается поверх autumn-properties.json рабочего каталога. Формат определяется по расширению: .json или .yaml (.yml). Относительный путь считается от рабочего каталога.

Файл, заданный в командной строке или переменной окружения, обязан существовать: иначе команда завершается ошибкой Файл настроек не найден. Файл из ключа settings необязателен: если его нет, действуют настройки проекта. Ключ settings внутри самого дополнительного файла не обрабатывается.

Локальные настройки разработчика

Проектный autumn-properties.json лежит в репозитории и одинаков у всех, а строка подключения, версия платформы, пути к EDT и Vanessa у каждого разработчика свои. Проектный файл ключом settings указывает на локальный файл, который в репозиторий не попадает:

json
{
  "vrunner": {
    "settings": "autumn-properties.local.json",
    "v8version": "8.3.24",
    "cf": {
      "compile": {
        "src": "./src",
        "out": "./build/1Cv8.cf"
      }
    }
  }
}

Локальный файл содержит только личные значения:

json
{
  "vrunner": {
    "ibconnection": "/FD:/bases/MyProject",
    "v8version": "8.3.25"
  }
}

vrunner cf compile у всех разработчиков и в CI запускается одинаково: src и out берутся из проектного файла, ibconnection и v8version - из локального; там, где локального файла нет, действуют проектные значения. Добавьте локальный файл в .gitignore:

gitignore
autumn-properties.local.json

Примеры

Подключение и платформа для всех команд

json
{
  "vrunner": {
    "ibconnection": "/FD:/bases/MyProject",
    "db-user": "Администратор",
    "db-pwd": "",
    "v8version": "8.3.24"
  }
}

Настройки группы и команды

json
{
  "vrunner": {
    "ibconnection": "/F./build/ib",
    "cf": {
      "compile": {
        "src": "./src"
      }
    },
    "repo": {
      "storage-name": "D:/repos/MyProject",
      "storage-user": "StorageUser"
    }
  }
}

storage-name и storage-user действуют для всех команд repo.

Обязательные аргументы и опции

Обязательные позиционные аргументы и опции, например extension-name у cfe decompile, тоже задаются в файле настроек. Если значение не задано ни в командной строке, ни в переменной окружения, ни в файле, команда завершается ошибкой и подсказывает ключ настройки.

json
{
  "vrunner": {
    "cf": {
      "compile": {
        "out": "./build/1Cv8.cf"
      }
    },
    "test": {
      "xunit": {
        "testspath": "./tests"
      }
    }
  }
}

С таким файлом vrunner cf compile и vrunner test xunit запускаются без аргументов.

CI

json
{
  "vrunner": {
    "v8version": "8.3.24",
    "ibcmd": true,
    "test": {
      "xunit": {
        "testspath": "./tests",
        "report-format": ["junit"],
        "report-path": "./build/reports/junit.xml"
      }
    }
  }
}

Логирование

Потоки вывода

По умолчанию лог (ИНФОРМАЦИЯ - ..., ОШИБКА - ...) и данные команд идут в stdout. Ключ log-output со значением stderr переводит лог в stderr; в stdout остаются только данные команд (JSON, таблицы, списки), и их можно разбирать, не вычищая строки лога:

json
{
  "vrunner": {
    "log-output": "stderr"
  }
}
bash
vrunner infobase extensions list --json --ibconnection /F./ib | jq '.[].имя'

Значения: stdout (по умолчанию) и stderr. Для разового запуска ключ задаётся переменной окружения VRUNNER_LOG_OUTPUT; она сильнее файла настроек.

При stderr в терминале оба потока видны вместе, а при перенаправлении vrunner ... > out.txt в файл попадают только данные. Чтобы сохранить и лог, перенаправьте оба потока: vrunner ... > out.txt 2>&1.

Уровни

Уровень логирования задаётся в секции logos того же файла:

json
{
  "logos": {
    "logger": {
      "vrunner": "DEBUG"
    }
  }
}

Доступные уровни: DEBUG, INFO, WARN, ERROR. В отладочном логе видно, какой файл настроек применён и откуда взято значение каждой опции.