diff --git a/README.md b/README.md index 3d177b3..6c154c4 100644 --- a/README.md +++ b/README.md @@ -128,21 +128,6 @@ pipeline1C() * Если информационная база нужна для запуска в режиме "Предприятие" (например, для шагов `bdd` или `smoke`), то будет запущен шаг "Миграция ИБ". * После загрузки конфигурации в ИБ будет выполняться запуск ИБ с целью запуска обработчиков обновления из БСП (`initInfobase` -> `runMigration`). * Если в настройках шага инициализации не заполнен массив дополнительных шагов миграции (`initInfobase` -> `additionalInitializationSteps`), но в каталоге `tools` присутствуют файлы с именами, удовлетворяющими шаблону `vrunner.init*.json`, то автоматически выполняется запуск `vrunner vanessa` с передачей найденных файлов в качестве значения настроек (параметр `--settings`) в порядке лексикографической сортировки имен файлов. -* Загрузка расширений в информационную базу - * Если у вас есть расширения которые необходимо загрузить в базу для проведения тестов и проверок, это можно сделать на этапе подготовки базы. - * При загрузке из исходников расширения должны быть в том же формате(edt или конфигуратора) что и основная конфигурация. - * Для загрузки расширений необходимо описать каждое из них в массиве (`initInfobase` -> `extensions`) - * Для каждого из расширений необходимо указать: - * Имя (`extensions` -> `name`) - * Способ получения (`extensions` -> `initMethod`) - - Сейчас поддерживаются 2 варианта: - * Из исходников(`fromSource`); - * Скачать cfe-файл из интернета (`fromInternet`) - * Путь до расширения (`extensions` -> `path`) - - * В случае загрузки из исходников - необходимо указать путь к исходникам расширения - * В случае загрузки из интернета - Укажите url по которому будет скачан cfe(Прим.: https://github.com/bia-technologies/yaxunit/releases/download/23.05/YAXUNIT-23.05.cfe) * BDD: * Если в конфигурационном файле проекта не заполнена настройка `bdd` -> `vrunnerSteps`, то автоматически выполняется запуск `vrunner vanessa --settings tools/vrunner.json`. * Дымовые тесты: @@ -180,3 +165,37 @@ pipeline1C() * Прямые получатели уведомлений не заполнены (`notifications` -> `email` -> `*options` -> `directRecipients`). * Telegram: * Уведомления о результатах сборки по умолчанию рассылаются всегда (`notifications` -> `telegram` -> `onAlways`, `onFailure`, `onUnstable`, `onSuccess`). + +## Конфигурирование загрузки расширений + +Если у вас есть расширения которые необходимо загрузить в базу для проведения тестов и проверок, это можно сделать на этапе подготовки базы. +* При загрузке из исходников расширения должны быть в том же формате(edt или конфигуратора) что и основная конфигурация. +* Для загрузки расширений необходимо описать каждое из них в массиве (`initInfobase` -> `extensions`) + +Для загрузки расширений в информационную базу необходимо выполнить следующие шаги: + +1. Укажите имя расширения(`extensions` -> `name`). +1. Определите метод загрузки для каждого расширения(`extensions` -> `initMethod`). Поддерживаются два метода загрузки: + - `fromSource` - загрузка из исходников; + - `fromFile` - загрузка cfe-файла. +1. Укажите путь до расширения или URL для скачивания cfe-файла(`extensions` -> `path`). + - В случае загрузки из исходников - необходимо указать путь к исходникам расширения + - В случае загрузки cfe - Укажите путь по которому будет скачан cfe. На данный момент можно указывать как локальный путь, так и url для скачивания cfe(Прим.: https://github.com/bia-technologies/yaxunit/releases/download/23.05/YAXUNIT-23.05.cfe) + +Пример конфигурации для загрузки расширений: +```json +"initInfobase": { + "extensions": [ + { + "name": "ИмяРасширения1", + "initMethod": "fromSource", + "path": "путь/до/исходников/расширения" + }, + { + "name": "ИмяРасширения2", + "initMethod": "fromFile", + "path": "https://example.com/path/to/extension.cfe" + } + ] +} +``` \ No newline at end of file diff --git a/resources/schema.json b/resources/schema.json index 5b89ff2..f3c942c 100644 --- a/resources/schema.json +++ b/resources/schema.json @@ -179,12 +179,12 @@ }, "initMethod": { "type": "string", - "description": "\n Способ инициализации расширения.\n Поддерживается два варианта:\n * fromSource - инициализация расширения из исходников;\n * fromInternet - скачивание скомпилированного cfe по ссылке.", - "enum": ["fromSource", "fromInternet"] + "description": "\n Способ инициализации расширения.\n Поддерживается два варианта:\n * fromSource - инициализация расширения из исходников;\n * fromFile - использование скомпилированного cfe.", + "enum": ["fromSource", "fromFile"] }, "path": { "type": "string", - "description": "Хранит в себе путь к расширению.\n * В случае если выбран initMethod - указывается путь к исходникам расширения.\n * В случае если выбран initMethod - указывается ссылка на cfe-файл" + "description": "Хранит в себе путь к расширению.\n * В случае если выбран initMethod - указывается путь к исходникам расширения.\n * В случае если выбран initMethod - указывается путь к cfe-файлу" } } } diff --git a/src/ru/pulsar/jenkins/library/configuration/InitExtensionMethod.groovy b/src/ru/pulsar/jenkins/library/configuration/InitExtensionMethod.groovy index cafc8c6..fc98ad2 100644 --- a/src/ru/pulsar/jenkins/library/configuration/InitExtensionMethod.groovy +++ b/src/ru/pulsar/jenkins/library/configuration/InitExtensionMethod.groovy @@ -6,7 +6,7 @@ enum InitExtensionMethod { @JsonProperty("fromSource") SOURCE, - @JsonProperty("fromInternet") - INTERNET + @JsonProperty("fromFile") + FILE } \ No newline at end of file diff --git a/src/ru/pulsar/jenkins/library/steps/GetExtensions.groovy b/src/ru/pulsar/jenkins/library/steps/GetExtensions.groovy index 772b2a4..fa770ad 100644 --- a/src/ru/pulsar/jenkins/library/steps/GetExtensions.groovy +++ b/src/ru/pulsar/jenkins/library/steps/GetExtensions.groovy @@ -37,8 +37,7 @@ class GetExtensions implements Serializable { String sourceDirName = "" if (config.sourceFormat == SourceFormat.EDT) { sourceDirName = "$env.WORKSPACE/$EdtToDesignerFormatTransformation.EXTENSION_DIR" - } - else { + } else { sourceDirName = "$env.WORKSPACE" } extractConvertedExtensions(sourceDirName, steps) @@ -48,9 +47,11 @@ class GetExtensions implements Serializable { Logger.println("Сборка расширения ${it.name} из исходников") String srcDir = getSrcDir(it, sourceDirName) buildExtension(it, srcDir, vrunnerPath, steps) - } else { + } elseif (it.initMethod == InitExtensionMethod.FILE){ Logger.println("Загрузка расширения ${it.name} из интернета по ссылке ${it.path}") loadExtension(it, env) + } else { + Logger.println("Неизвестный метод инициализации расширения ${it.name}") } } } @@ -70,7 +71,15 @@ class GetExtensions implements Serializable { private void loadExtension(Extension extension, def env) { String pathToExtension = "$env.WORKSPACE/${EXTENSIONS_OUT_DIR}/${extension.name}.cfe" FilePath localPathToExtension = FileUtils.getFilePath(pathToExtension) - localPathToExtension.copyFrom(new URL(extension.path)) + + if (extension.path.startsWith("http")) { + // If the path is a URL, download the file + localPathToExtension.copyFrom(new URL(extension.path)) + } else { + // If the path is a local file, copy the file + FilePath localFilePath = FileUtils.getFilePath(extension.path) + localPathToExtension.copyFrom(localFilePath.toURI().toURL()) + } }