From e72184c17e7af7549c522af3b0c73b00414a1bcb Mon Sep 17 00:00:00 2001 From: Dima Date: Tue, 30 Nov 2021 21:08:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B,=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 8 +++++--- .../library/configuration/ConfigurationReader.groovy | 1 + .../jenkins/library/configuration/JobConfiguration.groovy | 1 + .../jenkins/library/configuration/SmokeTestOptions.groovy | 4 ++-- src/ru/pulsar/jenkins/library/steps/SmokeTest.groovy | 4 ++-- src/ru/pulsar/jenkins/library/utils/VersionParser.groovy | 2 +- .../library/configuration/ConfigurationReaderTest.java | 4 ++++ test/unit/resources/jobConfiguration.json | 5 +++++ 9 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 3bb6fce..0bd1052 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ build/ bin/ lib/ +out/ *.iml .classpath diff --git a/README.md b/README.md index 959b046..518a94c 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ pipeline1C() * `STORAGE_USER` - параметры авторизации в хранилище вида "username with password" (для `secrets` -> `storage`). * Все "шаги" по умолчанию выключены (`stages`). * Если в корне репозитория существует файл `packagedef`, то в шагах, работающих с информационной базой, будет выполнена попытка установки локальных зависимостей средствами `opm`. - * Если после установки локальных зависимостей в каталоге `oscript_modules/bin` сушествует файл `vrunner`, то для выполнения команд работы с информационной базой будет использоваться он, а не глобально установленный `vrunner` из `PATH`. + * Если после установки локальных зависимостей в каталоге `oscript_modules/bin` существует файл `vrunner`, то для выполнения команд работы с информационной базой будет использоваться он, а не глобально установленный `vrunner` из `PATH`. * Результаты в формате `allure` ожидаются в каталоге `build/out/allure` или его подкаталогах. * Инициализация: * Информационная база инициализируется только в том случае, если в сборочной линии включены шаги, работающие с базой (например, `bdd` или `syntaxCheck`). @@ -121,14 +121,16 @@ pipeline1C() * Первичный запуск информационной базы: * Если информационная база нужна для запуска в режиме "Предприятие" (например, для шагов `bdd` или `smoke`), то будет запущен шаг "Миграция ИБ". * После загрузки конфигурации в ИБ будет выполняться запуск ИБ с целью запуска обработчиков обновления из БСП (`initInfobase` -> `runMigration`). - * Если в настройках шага инициализации не заполнен массив дополнительных шагов миграции (`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`. +* Дымовые тесты + * Если в конфигурационном файле проекта не заполнена настройка `smoke` -> `vrunnerSettings`, то автоматически выполняется запуск `vrunner vanessa --settings tools/vrunner.json`, а на выходе формируется только отчет в формате JUnit * Синтаксический контроль: * Если в репозитории существует файл `tools/vrunner.json`, то синтаксический контроль конфигурации с помощью конфигуратора будет выполняться с передачей файла в параметры запуска `vrunner syntax-check --settings tools/vrunner.json` (`syntaxCheck` -> `vrunnerSettings`). * Применяется группировка ошибок по метаданным (`syntaxCheck` -> `groupErrorsByMetadata`). * Выгрузка результатов в формат `jUnit` осуществляется в файл `./build/out/jUnit/syntax.xml` (`syntaxCheck` -> `pathToJUnitReport`). - * Если в репозитории существует файл `./tools/syntax-check-exception-file.txt`, то команде запука синтаксического контроля конфигурации данный файл будет передаваться как файл с исключениями сообщений об ошибках (параметр `--exception-file`) (`syntaxCheck` -> `exceptionFile`). + * Если в репозитории существует файл `./tools/syntax-check-exception-file.txt`, то команде запуска синтаксического контроля конфигурации данный файл будет передаваться как файл с исключениями сообщений об ошибках (параметр `--exception-file`) (`syntaxCheck` -> `exceptionFile`). * Конфигурационный файл по умолчанию уже содержит ряд "режимов проверки" для синтаксического контроля конфигурации (`syntaxCheck` -> `checkModes`). * Трансформация результатов валидации EDT: * По умолчанию из результатов анализа исключаются замечания, сработавшие на модулях с включенным запретом редактирования (желтый куб с замком) (параметры `resultsTransform` -> `removeSupport` и `resultsTransform` -> `supportLevel`). diff --git a/src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy b/src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy index 09776bd..a737a64 100644 --- a/src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy +++ b/src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy @@ -59,6 +59,7 @@ class ConfigurationReader implements Serializable { "initInfobaseOptions", "bddOptions", "sonarQubeOptions", + "smokeTestOptions", "syntaxCheckOptions", "resultsTransformOptions" ).toSet() diff --git a/src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy b/src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy index 34c06c2..dbbdcd1 100644 --- a/src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy +++ b/src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy @@ -69,6 +69,7 @@ class JobConfiguration implements Serializable { ", initInfobaseOptions=" + initInfobaseOptions + ", bddOptions=" + bddOptions + ", sonarQubeOptions=" + sonarQubeOptions + + ", smokeTestOptions=" + smokeTestOptions + ", syntaxCheckOptions=" + syntaxCheckOptions + ", smokeTestOptions=" + smokeTestOptions + ", resultsTransformOptions=" + resultsTransformOptions + diff --git a/src/ru/pulsar/jenkins/library/configuration/SmokeTestOptions.groovy b/src/ru/pulsar/jenkins/library/configuration/SmokeTestOptions.groovy index f58efb0..081c9be 100644 --- a/src/ru/pulsar/jenkins/library/configuration/SmokeTestOptions.groovy +++ b/src/ru/pulsar/jenkins/library/configuration/SmokeTestOptions.groovy @@ -25,10 +25,10 @@ class SmokeTestOptions implements Serializable { @Override @NonCPS String toString() { - return "SyntaxCheckOptions{" + + return "SmokeTestOptions{" + "vrunnerSettings=" + vrunnerSettings + ", publishToAllureReport=" + publishToAllureReport + ", publishToJUnitReport=" + publishToJUnitReport + - '}'; + '}' } } diff --git a/src/ru/pulsar/jenkins/library/steps/SmokeTest.groovy b/src/ru/pulsar/jenkins/library/steps/SmokeTest.groovy index abe1dad..507cc7d 100644 --- a/src/ru/pulsar/jenkins/library/steps/SmokeTest.groovy +++ b/src/ru/pulsar/jenkins/library/steps/SmokeTest.groovy @@ -12,7 +12,7 @@ class SmokeTest implements Serializable { public static final String SMOKE_ALLURE_STASH = 'smoke-allure' - private final JobConfiguration config; + private final JobConfiguration config SmokeTest(JobConfiguration config) { this.config = config @@ -41,7 +41,7 @@ class SmokeTest implements Serializable { String vrunnerSettings = options.vrunnerSettings if (steps.fileExists(vrunnerSettings)) { - command += " --settings $vrunnerSettings"; + command += " --settings $vrunnerSettings" } String xddTestRunnerPath = "./oscript_modules/add/xddTestRunner.epf" diff --git a/src/ru/pulsar/jenkins/library/utils/VersionParser.groovy b/src/ru/pulsar/jenkins/library/utils/VersionParser.groovy index 74054aa..9afc196 100644 --- a/src/ru/pulsar/jenkins/library/utils/VersionParser.groovy +++ b/src/ru/pulsar/jenkins/library/utils/VersionParser.groovy @@ -28,7 +28,7 @@ class VersionParser implements Serializable { return "" } - def configurationText = steps.readFile(filePath); + def configurationText = steps.readFile(filePath, 'UTF-8') return version(configurationText, regexp) } diff --git a/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java b/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java index a1fe3b2..8d5292b 100644 --- a/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java +++ b/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java @@ -44,6 +44,10 @@ class ConfigurationReaderTest { assertThat(jobConfiguration.getResultsTransformOptions().isRemoveSupport()).isFalse(); assertThat(jobConfiguration.getResultsTransformOptions().getSupportLevel()).isZero(); + assertThat(jobConfiguration.getSmokeTestOptions().getVrunnerSettings()).contains("./tools/vrunner-smoke.json"); + assertThat(jobConfiguration.getSmokeTestOptions().isPublishToAllureReport()).isFalse(); + assertThat(jobConfiguration.getSmokeTestOptions().isPublishToJUnitReport()).isTrue(); + assertThat(jobConfiguration.getInitInfobaseOptions().getRunMigration()).isFalse(); assertThat(jobConfiguration.getInitInfobaseOptions().getAdditionalInitializationSteps()).contains("vanessa --settings ./tools/vrunner.first.json"); diff --git a/test/unit/resources/jobConfiguration.json b/test/unit/resources/jobConfiguration.json index 947e8ba..f9b28a0 100644 --- a/test/unit/resources/jobConfiguration.json +++ b/test/unit/resources/jobConfiguration.json @@ -18,5 +18,10 @@ "resultsTransform": { "removeSupport": false }, + "smoke": { + "vrunnerSettings": "./tools/vrunner-smoke.json", + "publishToAllureReport": false, + "publishToJUnitReport": true + }, "logosConfig": "logger.rootLogger=DEBUG" } \ No newline at end of file