mirror of
https://github.com/firstBitMarksistskaya/jenkins-lib.git
synced 2025-03-06 16:16:24 +02:00
Merge pull request #74 from Segate-ekb/feature/useBranchPlugin_parametr
This commit is contained in:
commit
df0c3f364d
@ -145,6 +145,7 @@ pipeline1C()
|
||||
* Предполагается наличие единственной настройки `SonarQube installation` (`sonarqube` -> `sonarQubeInstallation`).
|
||||
* Используется `sonar-scanner` из переменной окружения `PATH` (`sonarqube` -> `useSonarScannerFromPath`).
|
||||
* Если использование `sonar-scanner` из переменной окружения `PATH` выключено, предполагается наличие настроенного глобального инструмента `SonarQube Scanner` с идентификатором инструмента `sonar-scanner` (`sonarqube` -> `sonarScannerToolName`).
|
||||
* Применяется расчет аргументов командной строки для работы [`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 и не анализирует результат прохождения Порога качества (`sonarqube` -> `waitForQualityGate`).
|
||||
Для этого необходимо заполнить параметр (`sonarqube` -> `infoBaseUpdateModuleName`). Если параметр не заполнен, версия передается из корня конфигурации.
|
||||
|
@ -45,7 +45,7 @@
|
||||
"useSonarScannerFromPath": true,
|
||||
"sonarScannerToolName": "sonar-scanner",
|
||||
"infoBaseUpdateModuleName" : "",
|
||||
"useBranchPlugin" : true,
|
||||
"branchAnalysisConfiguration": "fromEnv",
|
||||
"waitForQualityGate": false
|
||||
},
|
||||
"syntaxCheck": {
|
||||
|
@ -178,9 +178,10 @@
|
||||
"type" : "string",
|
||||
"description" : "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
||||
},
|
||||
"useBranchPlugin" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Используется ли Branch-plugin в SonarQube"
|
||||
"branchAnalysisConfiguration" : {
|
||||
"type" : "string",
|
||||
"description" : "Вариант конфигурации branch plugin.\n Поддерживаемые варианты:\n * auto - применяется автоконфигурация sonar-scanner силами branchplugin. Так же может применяться для отключения конфигурирования, если branch plugin отсутствует;\n * fromEnv - применяется ручная конфигурация sonar-scanner на основе переменных среды.\n Значение по умолчанию: fromEnv.",
|
||||
"enum" : [ "auto", "fromEnv" ]
|
||||
},
|
||||
"waitForQualityGate" : {
|
||||
"type" : "boolean",
|
||||
|
@ -0,0 +1,17 @@
|
||||
package ru.pulsar.jenkins.library.configuration
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyDescription
|
||||
|
||||
enum BranchAnalysisConfiguration {
|
||||
@JsonPropertyDescription(
|
||||
"""Применяется автоконфигурация sonar-scanner силами branchplugin.
|
||||
Так же может применяться для отключения конфигурирования, если branch plugin отсутствует"""
|
||||
)
|
||||
@JsonProperty("auto")
|
||||
AUTO,
|
||||
|
||||
@JsonPropertyDescription("Применяется ручная конфигурация sonar-scanner на основе переменных среды")
|
||||
@JsonProperty("fromEnv")
|
||||
FROM_ENV
|
||||
}
|
@ -25,8 +25,12 @@ class SonarQubeOptions implements Serializable {
|
||||
""")
|
||||
String infoBaseUpdateModuleName
|
||||
|
||||
@JsonPropertyDescription("Используется ли Branch-plugin в SonarQube")
|
||||
Boolean useBranchPlugin
|
||||
@JsonPropertyDescription("""Вариант конфигурации branch plugin.
|
||||
Поддерживаемые варианты:
|
||||
* auto - применяется автоконфигурация sonar-scanner силами branchplugin. Так же может применяться для отключения конфигурирования, если branch plugin отсутствует;
|
||||
* fromEnv - применяется ручная конфигурация sonar-scanner на основе переменных среды.
|
||||
Значение по умолчанию: fromEnv.""")
|
||||
BranchAnalysisConfiguration branchAnalysisConfiguration
|
||||
|
||||
@JsonPropertyDescription("""Ожидать состояние Quality Gate от SonarQube после загрузки анализа. По умолчанию `false`.
|
||||
Таймаут ожидания состояния равен таймауту шага.
|
||||
@ -41,7 +45,7 @@ class SonarQubeOptions implements Serializable {
|
||||
", sonarScannerToolName='" + sonarScannerToolName + '\'' +
|
||||
", sonarQubeInstallation='" + sonarQubeInstallation + '\'' +
|
||||
", infoBaseUpdateModuleName='" + infoBaseUpdateModuleName + '\'' +
|
||||
", useBranchPlugin='" + useBranchPlugin + '\'' +
|
||||
", branchAnalysisConfiguration='" + branchAnalysisConfiguration + '\'' +
|
||||
", waitForQualityGate='" + waitForQualityGate + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.pulsar.jenkins.library.steps
|
||||
|
||||
import ru.pulsar.jenkins.library.IStepExecutor
|
||||
import ru.pulsar.jenkins.library.configuration.BranchAnalysisConfiguration
|
||||
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
||||
import ru.pulsar.jenkins.library.configuration.SourceFormat
|
||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||
@ -38,8 +39,17 @@ class SonarScanner implements Serializable {
|
||||
|
||||
String sonarCommand = "$sonarScannerBinary"
|
||||
|
||||
if (config.sonarQubeOptions.useBranchPlugin) {
|
||||
sonarCommand += " -Dsonar.branch.name=$env.BRANCH_NAME"
|
||||
def branchAnalysisConfiguration = config.sonarQubeOptions.branchAnalysisConfiguration
|
||||
if (branchAnalysisConfiguration == BranchAnalysisConfiguration.FROM_ENV) {
|
||||
if (env.CHANGE_ID){
|
||||
sonarCommand += " -Dsonar.pullrequest.key=$env.CHANGE_ID"
|
||||
sonarCommand += " -Dsonar.pullrequest.branch=$env.CHANGE_BRANCH"
|
||||
sonarCommand += " -Dsonar.pullrequest.base=$env.CHANGE_TARGET"
|
||||
} else {
|
||||
sonarCommand += " -Dsonar.branch.name=$env.BRANCH_NAME"
|
||||
}
|
||||
} else (branchAnalysisConfiguration == BranchAnalysisConfiguration.AUTO) {
|
||||
// no-op
|
||||
}
|
||||
|
||||
String projectVersion = computeProjectVersion()
|
||||
|
@ -10,6 +10,7 @@ import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static ru.pulsar.jenkins.library.configuration.BranchAnalysisConfiguration.AUTO;
|
||||
|
||||
class ConfigurationReaderTest {
|
||||
|
||||
@ -37,6 +38,7 @@ class ConfigurationReaderTest {
|
||||
assertThat(jobConfiguration.getSonarQubeOptions().getSonarScannerToolName()).isEqualTo("sonar-scanner");
|
||||
assertThat(jobConfiguration.getSonarQubeOptions().getSonarQubeInstallation()).isEqualTo("qa");
|
||||
assertThat(jobConfiguration.getSonarQubeOptions().getUseSonarScannerFromPath()).isTrue();
|
||||
assertThat(jobConfiguration.getSonarQubeOptions().getBranchAnalysisConfiguration()).isEqualTo(AUTO);
|
||||
|
||||
assertThat(jobConfiguration.getSecrets())
|
||||
.hasFieldOrPropertyWithValue("storage", "1234")
|
||||
|
@ -17,7 +17,8 @@
|
||||
]
|
||||
},
|
||||
"sonarqube": {
|
||||
"sonarQubeInstallation": "qa"
|
||||
"sonarQubeInstallation": "qa",
|
||||
"branchAnalysisConfiguration": "auto"
|
||||
},
|
||||
"syntaxCheck": {
|
||||
"checkModes": ["-ThinClient"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user