From accc8e8559ec3a35297060ab017b63239896d7db Mon Sep 17 00:00:00 2001 From: Dima Date: Sun, 28 Jul 2024 10:04:45 +0300 Subject: [PATCH] fixes --- README.md | 6 ++++- .../configuration/GenericIssueFormat.groovy | 12 ---------- .../ResultsTransformOptions.groovy | 1 + .../sonarqube/GenericIssueFormat.groovy | 24 +++++++++++++++++++ .../library/steps/ResultsTransformer.groovy | 8 +------ .../ConfigurationReaderTest.java | 1 + 6 files changed, 32 insertions(+), 20 deletions(-) delete mode 100644 src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy create mode 100644 src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy diff --git a/README.md b/README.md index 331ffaf6..f516ab2b 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,6 @@ pipeline1C() * Применяется расчет аргументов командной строки для работы [`branch plugin`](https://github.com/mc1arke/sonarqube-community-branch-plugin) или коммерческих версий SonarQube (`sonarqube` -> `branchAnalysisConfiguration`). * Если разработка ведется с использованием подсистемы [БСП "Обновление версии ИБ"](https://its.1c.ru/db/bsp315doc#content:4:1:issogl1_обновление_версии_иб), то в значение параметра `sonar.projectVersion=$configurationVersion` утилиты `sonar-scanner` можно передавать версию из созданного общего модуля. Для этого необходимо заполнить параметр (`sonarqube` -> `infoBaseUpdateModuleName`). Если параметр не заполнен, версия передается из корня конфигурации. * По умолчанию шаг анализа не дожидается окончания фонового задания на сервере SonarQube и не анализирует результат прохождения Порога качества (`sonarqube` -> `waitForQualityGate`). - * Если валидация EDT выполнялась через stebi, путь к результирующему файлу в формате `generic issues` необходимо передать утилите `sonar-scanner` как значение параметра `sonar.externalIssuesReportPaths`. При использовании `edt-ripper` необходимо передать путь к файлу в качестве значения параметра `sonar.bsl.languageserver.reportPaths` * Рассылка уведомлений: * Электронная почта: * Для отправки используется плагин [`email-ext`](https://plugins.jenkins.io/email-ext). Шаблоны сообщений конфигурируются в настройках плагина. @@ -211,3 +210,8 @@ pipeline1C() * Добавить расширение `YAXUnit` и дополнительные расширения с тестами можно в `jobConfiguration.json` -> `initInfobase` -> `extensions`. Они будут загружены при инициализации ИБ. * Если ваши тесты размещены в отдельных расширениях, скопируйте файл `./resources/yaxunit.json` из текущей библиотеки в свой репозиторий (`./tools/yaxunit.json`) и перечислите в нем имена ваших расширений. * Если используется собственный файл `tools/yaxunit.json`, то значение параметра reportPath в нем должно быть равно `./build/out/yaxunit/junit.xml` + +## Настройка шага resultsTransform + + * Если валидация EDT выполнялась через `stebi`, необходимо в `sonar-project.properties` указать `sonar.externalIssuesReportPaths=build/out/edt-issues.json` + * Если валидация EDT выполнялась через `edt-ripper`, необходимо в `sonar-project.properties` указать `sonar.bsl.languageserver.reportPaths=build/out/edt-issues.json` diff --git a/src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy b/src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy deleted file mode 100644 index c9cfce12..00000000 --- a/src/ru/pulsar/jenkins/library/configuration/GenericIssueFormat.groovy +++ /dev/null @@ -1,12 +0,0 @@ -package ru.pulsar.jenkins.library.configuration - -import com.fasterxml.jackson.annotation.JsonProperty - -enum GenericIssueFormat { - @JsonProperty("Generic_Issue") - GENERIC_ISSUE, - - @JsonProperty("Generic_Issue_10_3") - GENERIC_ISSUE_10_3 - -} \ No newline at end of file diff --git a/src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy b/src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy index 28767095..2f4dcb77 100644 --- a/src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy +++ b/src/ru/pulsar/jenkins/library/configuration/ResultsTransformOptions.groovy @@ -3,6 +3,7 @@ package ru.pulsar.jenkins.library.configuration import com.cloudbees.groovy.cps.NonCPS import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonPropertyDescription +import ru.pulsar.jenkins.library.configuration.sonarqube.GenericIssueFormat @JsonIgnoreProperties(ignoreUnknown = true) class ResultsTransformOptions implements Serializable { diff --git a/src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy b/src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy new file mode 100644 index 00000000..518c6013 --- /dev/null +++ b/src/ru/pulsar/jenkins/library/configuration/sonarqube/GenericIssueFormat.groovy @@ -0,0 +1,24 @@ +package ru.pulsar.jenkins.library.configuration.sonarqube + +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonValue + +enum GenericIssueFormat { + @JsonProperty("Generic_Issue") + GENERIC_ISSUE("Generic_Issue"), + + @JsonProperty("Generic_Issue_10_3") + GENERIC_ISSUE_10_3("Generic_Issue_10_3") + + private String value + + private GenericIssueFormat(String value) { + this.value = value + } + + + String getValue() { + return value + } + +} \ No newline at end of file diff --git a/src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy b/src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy index 40045e5b..17f7aab1 100644 --- a/src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy +++ b/src/ru/pulsar/jenkins/library/steps/ResultsTransformer.groovy @@ -1,7 +1,6 @@ package ru.pulsar.jenkins.library.steps import ru.pulsar.jenkins.library.IStepExecutor -import ru.pulsar.jenkins.library.configuration.GenericIssueFormat import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.configuration.ResultsTransformerType import ru.pulsar.jenkins.library.configuration.SourceFormat @@ -9,8 +8,6 @@ import ru.pulsar.jenkins.library.ioc.ContextRegistry import ru.pulsar.jenkins.library.utils.FileUtils import ru.pulsar.jenkins.library.utils.Logger -import java.nio.file.Paths - class ResultsTransformer implements Serializable { public static final String RESULT_STASH = 'edt-issues' @@ -46,10 +43,7 @@ class ResultsTransformer implements Serializable { Logger.println("Конвертация результата EDT в Generic Issue с помощью stebi") def genericIssueFile = "$env.WORKSPACE/$RESULT_FILE" - def genericIssuesFormat = "Generic_Issue" - if (config.resultsTransformOptions.genericIssueFormat == GenericIssueFormat.GENERIC_ISSUE_10_3) { - genericIssuesFormat = "Generic_Issue_10_3" - } + def genericIssuesFormat = config.resultsTransformOptions.genericIssueFormat.getValue() steps.cmd("stebi convert --Format $genericIssuesFormat -r $edtValidateFile $genericIssueFile $srcDir") 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 f85275ed..6bb7e476 100644 --- a/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java +++ b/test/unit/groovy/ru/pulsar/jenkins/library/configuration/ConfigurationReaderTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import ru.pulsar.jenkins.library.configuration.sonarqube.GenericIssueFormat; import ru.pulsar.jenkins.library.utils.TestUtils; import java.io.IOException;