From eb0e9c361f111412c6ee3a5c648036538e027d7d Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Fri, 11 Jun 2021 17:17:02 +0300 Subject: [PATCH] =?UTF-8?q?Fix=20#11.=20=D0=9F=D0=BE=D0=B8=D1=81=D0=BA=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20vrunner.init.json=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B2=D0=B8=D1=87=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- build.gradle.kts | 1 + .../pulsar/jenkins/library/IStepExecutor.groovy | 5 +++++ .../pulsar/jenkins/library/StepExecutor.groovy | 7 ++++++- .../jenkins/library/steps/InitInfobase.groovy | 16 +++++++++++++--- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7701d68..d67fd24 100644 --- a/README.md +++ b/README.md @@ -107,9 +107,10 @@ pipeline1C() * `STORAGE_PATH` - путь к хранилищу конфигурации; * `STORAGE_USER` - параметры авторизации в хранилище вида "username with password". * Все "шаги" по умолчанию выключены. + * Результаты в формате `allure` ожидаются в каталоге `build/out/allure` или его подкаталогах. * Инициализация: * Если включен шаг `initSteps`, то будет выполняться запуск ИБ с целью запуска обработчиков обновления из БСП. (`initInfobase` -> `runMigration`) - * TODO: Если в настройках шага инициализации не заполнен массив дополнительных шагов миграции (`initInfobase` -> `additionalInitializationSteps`), но в каталоге `tools` присутствуют файлы с именами, удовлетворяющими шаблону `vrunner.init*.json`, то автоматически выполняется запуск `vrunner vanessa` с передачей найденных файлов в качестве значения настроек (параметр `--settings`) в порядке лексиграфической сортировки имен файлов. + * Если в настройках шага инициализации не заполнен массив дополнительных шагов миграции (`initInfobase` -> `additionalInitializationSteps`), но в каталоге `tools` присутствуют файлы с именами, удовлетворяющими шаблону `vrunner.init*.json`, то автоматически выполняется запуск `vrunner vanessa` с передачей найденных файлов в качестве значения настроек (параметр `--settings`) в порядке лексиграфической сортировки имен файлов. * BDD: * Если в конфигурационном файле проекта не заполнена настройка `bdd` -> `vrunnerSteps`, то автоматически выполняется запуск `vrunner vanessa --settings tools/vrunner.json`. * Синтаксический контроль: diff --git a/build.gradle.kts b/build.gradle.kts index 643a9db..903165c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -78,6 +78,7 @@ sharedLibrary { // TODO: retrieve downloaded plugin resource pluginDependencies { dependency("org.jenkins-ci.plugins", "pipeline-build-step", "2.12") + dependency("org.jenkins-ci.plugins", "pipeline-utility-steps", "2.8.0") dependency("org.jenkins-ci.plugins", "git", "4.4.4") dependency("org.6wind.jenkins", "lockable-resources", "2.7") dependency("ru.yandex.qatools.allure", "allure-jenkins-plugin", "2.28.1") diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index 54d57af..8c11196 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -1,5 +1,6 @@ package ru.pulsar.jenkins.library +import org.jenkinsci.plugins.pipeline.utility.steps.fs.FileWrapper import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction interface IStepExecutor { @@ -12,6 +13,10 @@ interface IStepExecutor { String libraryResource(String path) + FileWrapper[] findFiles(String glob) + + FileWrapper[] findFiles(String glob, String excludes) + String readFile(String file, String encoding) void echo(message) diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index 8cbe2de..573673b 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -1,6 +1,6 @@ package ru.pulsar.jenkins.library - +import org.jenkinsci.plugins.pipeline.utility.steps.fs.FileWrapper import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction import ru.yandex.qatools.allure.jenkins.config.ResultsConfig @@ -37,6 +37,11 @@ class StepExecutor implements IStepExecutor { steps.readFile encoding: encoding, file: file } + @Override + FileWrapper[] findFiles(String glob, String excludes = '') { + steps.findFiles glob: glob, excludes: excludes + } + @Override void echo(Object message) { steps.echo message diff --git a/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy b/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy index dce9133..eaef74b 100644 --- a/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy +++ b/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy @@ -1,5 +1,6 @@ package ru.pulsar.jenkins.library.steps +import org.jenkinsci.plugins.pipeline.utility.steps.fs.FileWrapper import ru.pulsar.jenkins.library.IStepExecutor import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.ioc.ContextRegistry @@ -46,9 +47,18 @@ class InitInfobase implements Serializable { } steps.catchError { - config.initInfobaseOptions.additionalInitializationSteps.each { - Logger.println("Первичная инициализация командой ${it}") - steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"") + if (config.initInfobaseOptions.additionalInitializationSteps.length == 0) { + FileWrapper[] files = steps.findFiles("tools/vrunner.init*.json") + files = files.sort new OrderBy( { it.name }) + files.each { + Logger.println("Первичная инициализация файлом ${it.path}") + steps.cmd("oscript_modules/bin/vrunner vanessa --settings ${it.path} --ibconnection \"/F./build/ib\"") + } + } else { + config.initInfobaseOptions.additionalInitializationSteps.each { + Logger.println("Первичная инициализация командой ${it}") + steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"") + } } } }