diff --git a/README.md b/README.md index d67fd24..37e6b6f 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ pipeline1C() количество переопределений конфигурационного файла до минимума. * Общее: + * В качестве маски версии платформы используется строка "8.3". * Исходники конфигурации ожидаются в каталоге `src/cf`. * TODO: Имена "секретов" (jenkins credentials) по умолчанию высчитываются как `GROUP_REPO_KEY`, где `GROUP` и `REPO` - это группа проектов и имя проектов (например, `firstBitSemenovskaya` и `jenkins-lib`), а `KEY` - ключ секрета: * `STORAGE_PATH` - путь к хранилищу конфигурации; @@ -117,4 +118,4 @@ pipeline1C() * Если в репозитории существует файл `tools/vrunner.json`, то синтаксический контроль конфигурации с помощью конфигуратора будет выполняться с передачей файла в параметры запуска `vrunner syntax-check --settings tools/vrunner.json`. * TODO: Значение параметра `--mode` из конфигурационного файла vrunner имеют приоритет над `syntaxCheck` -> `checkModes`. Значение из `jobConfiguration.json` передается только в том случае, если параметр отсутствует в конфигурационном файле `vrunner`. * Трансформация результатов валидации EDT: - * По умолчанию из результатов анализа исключаются замечания, сработавшие на модулях с включенным запретом редактирования (желтый куб с замком) \ No newline at end of file + * По умолчанию из результатов анализа исключаются замечания, сработавшие на модулях с включенным запретом редактирования (желтый куб с замком) diff --git a/resources/globalConfiguration.json b/resources/globalConfiguration.json index d5a546c..e0a5223 100644 --- a/resources/globalConfiguration.json +++ b/resources/globalConfiguration.json @@ -1,5 +1,6 @@ { "$schema": "schema.json", + "v8version": "8.3", "srcDir": "src/cf", "sourceFormat": "designer", "secrets": { diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index 8c11196..c8d36c7 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -19,6 +19,8 @@ interface IStepExecutor { String readFile(String file, String encoding) + boolean fileExists(String file) + void echo(message) int cmd(String script, boolean returnStatus) diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index 573673b..8bd9348 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -37,6 +37,11 @@ class StepExecutor implements IStepExecutor { steps.readFile encoding: encoding, file: file } + @Override + boolean fileExists(String file) { + steps.fileExists file + } + @Override FileWrapper[] findFiles(String glob, String excludes = '') { steps.findFiles glob: glob, excludes: excludes diff --git a/src/ru/pulsar/jenkins/library/steps/Bdd.groovy b/src/ru/pulsar/jenkins/library/steps/Bdd.groovy index ebb8629..33940e9 100644 --- a/src/ru/pulsar/jenkins/library/steps/Bdd.groovy +++ b/src/ru/pulsar/jenkins/library/steps/Bdd.groovy @@ -4,6 +4,7 @@ import ru.pulsar.jenkins.library.IStepExecutor import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.ioc.ContextRegistry import ru.pulsar.jenkins.library.utils.Logger +import ru.pulsar.jenkins.library.utils.VRunner class Bdd implements Serializable { @@ -29,16 +30,11 @@ class Bdd implements Serializable { steps.createDir('build/out') - // TODO: удалить после выхода VAS 1.0.35 - steps.httpRequest( - 'https://cloud.svc.pulsar.ru/index.php/s/WKwmqpFXSjfYjAH/download', - 'oscript_modules/vanessa-automation-single/vanessa-automation-single.epf' - ) - steps.catchError { config.bddOptions.vrunnerSteps.each { Logger.println("Шаг запуска сценариев командой ${it}") - steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"") + String vrunnerPath = VRunner.getVRunnerPath(); + steps.cmd("$vrunnerPath ${it} --ibconnection \"/F./build/ib\"") } } } diff --git a/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy b/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy index eaef74b..4518a35 100644 --- a/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy +++ b/src/ru/pulsar/jenkins/library/steps/InitInfobase.groovy @@ -5,6 +5,7 @@ import ru.pulsar.jenkins.library.IStepExecutor import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.ioc.ContextRegistry import ru.pulsar.jenkins.library.utils.Logger +import ru.pulsar.jenkins.library.utils.VRunner class InitInfobase implements Serializable { @@ -26,21 +27,17 @@ class InitInfobase implements Serializable { return } - // TODO: удалить после выхода VAS 1.0.35 - steps.httpRequest( - 'https://cloud.svc.pulsar.ru/index.php/s/WKwmqpFXSjfYjAH/download', - 'oscript_modules/vanessa-automation-single/vanessa-automation-single.epf' - ) - List logosConfig = ["LOGOS_CONFIG=$config.logosConfig"] steps.withEnv(logosConfig) { + String vrunnerPath = VRunner.getVRunnerPath(); + if (config.initInfobaseOptions.runMigration) { Logger.println("Запуск миграции ИБ") // Запуск миграции steps.catchError { - steps.cmd('oscript_modules/bin/vrunner run --command "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы;" --execute \\$runnerRoot/epf/ЗакрытьПредприятие.epf --ibconnection "/F./build/ib"') + steps.cmd(vrunnerPath + ' run --command "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы;" --execute \\$runnerRoot/epf/ЗакрытьПредприятие.epf --ibconnection "/F./build/ib"') } } else { Logger.println("Шаг миграции ИБ выключен") @@ -52,12 +49,12 @@ class InitInfobase implements Serializable { 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\"") + steps.cmd("$vrunnerPath 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\"") + steps.cmd("$vrunnerPath ${it} --ibconnection \"/F./build/ib\"") } } } diff --git a/src/ru/pulsar/jenkins/library/utils/VRunner.groovy b/src/ru/pulsar/jenkins/library/utils/VRunner.groovy new file mode 100644 index 0000000..53fd98d --- /dev/null +++ b/src/ru/pulsar/jenkins/library/utils/VRunner.groovy @@ -0,0 +1,20 @@ +package ru.pulsar.jenkins.library.utils + +import ru.pulsar.jenkins.library.IStepExecutor +import ru.pulsar.jenkins.library.ioc.ContextRegistry + +class VRunner { + + static String getVRunnerPath() { + + IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() + + String vrunnerBinary = steps.isUnix() ? "vrunner" : "vrunner.bat"; + String vrunnerPath = "oscript_modules/bin/$vrunnerBinary"; + if (!steps.fileExists(vrunnerPath)) { + vrunnerPath = vrunnerBinary; + } + + return vrunnerPath; + } +} diff --git a/test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java b/test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java index 2531ae6..6d2e88b 100644 --- a/test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java +++ b/test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java @@ -34,6 +34,11 @@ public class TestUtils { return FileUtils.readFileToString(new File(file), encoding); }); + when(steps.fileExists(anyString())).thenAnswer(invocation -> { + String file = invocation.getArgument(0); + return new File(file).exists(); + }); + return steps; } diff --git a/vars/initFromStorage.groovy b/vars/initFromStorage.groovy index 3937c0c..b4f9a87 100644 --- a/vars/initFromStorage.groovy +++ b/vars/initFromStorage.groovy @@ -1,4 +1,5 @@ import ru.pulsar.jenkins.library.configuration.JobConfiguration +import ru.pulsar.jenkins.library.utils.VRunner import ru.pulsar.jenkins.library.utils.VersionParser def call(JobConfiguration jobConfiguration) { @@ -17,6 +18,7 @@ def call(JobConfiguration jobConfiguration) { variable: 'STORAGE_PATH' ) ]) { - cmd "oscript_modules/bin/vrunner init-dev --storage --storage-name $STORAGE_PATH --storage-user $STORAGE_USR --storage-pwd $STORAGE_PSW $storageVersionParameter --ibconnection \"/F./build/ib\"" + String vrunnerPath = VRunner.getVRunnerPath(); + cmd "$vrunnerPath init-dev --storage --storage-name $STORAGE_PATH --storage-user $STORAGE_USR --storage-pwd $STORAGE_PSW $storageVersionParameter --ibconnection \"/F./build/ib\"" } } \ No newline at end of file diff --git a/vars/installLocalDependencies.groovy b/vars/installLocalDependencies.groovy index 86c9580..02c13b4 100644 --- a/vars/installLocalDependencies.groovy +++ b/vars/installLocalDependencies.groovy @@ -1,3 +1,10 @@ +import ru.pulsar.jenkins.library.utils.Logger + def call() { + if (!fileExists("packagedef")) { + return + } + + Logger.println("Установка локальных зависимостей OneScript") cmd("opm install -l") } \ No newline at end of file diff --git a/vars/syntaxCheck.groovy b/vars/syntaxCheck.groovy index 048cb6f..393a511 100644 --- a/vars/syntaxCheck.groovy +++ b/vars/syntaxCheck.groovy @@ -2,6 +2,7 @@ import hudson.FilePath import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.ioc.ContextRegistry import ru.pulsar.jenkins.library.utils.FileUtils +import ru.pulsar.jenkins.library.utils.VRunner def call(JobConfiguration config) { @@ -27,7 +28,8 @@ def call(JobConfiguration config) { String outPath = pathToJUnitReport.getParent() createDir(outPath) - String command = 'oscript_modules/bin/vrunner syntax-check --ibconnection "/F./build/ib"' + String vrunnerPath = VRunner.getVRunnerPath(); + String command = "$vrunnerPath syntax-check --ibconnection \"/F./build/ib\"" // Временно убрал передачу параметра. // См. https://github.com/vanessa-opensource/vanessa-runner/issues/361