You've already forked jenkins-lib
forked from jenkins/jenkins-lib
Определение версии (#58)
Co-authored-by: kuzja086 <kozs@tlink.ru> Co-authored-by: Nikita Fedkin <nixel2007@gmail.com>
This commit is contained in:
@@ -143,5 +143,6 @@ pipeline1C()
|
|||||||
* Предполагается наличие единственной настройки `SonarQube installation` (`sonarqube` -> `sonarQubeInstallation`).
|
* Предполагается наличие единственной настройки `SonarQube installation` (`sonarqube` -> `sonarQubeInstallation`).
|
||||||
* Используется `sonar-scanner` из переменной окружения `PATH` (`sonarqube` -> `useSonarScannerFromPath`).
|
* Используется `sonar-scanner` из переменной окружения `PATH` (`sonarqube` -> `useSonarScannerFromPath`).
|
||||||
* Если использование `sonar-scanner` из переменной окружения `PATH` выключено, предполагается наличие настроенного глобального инструмента `SonarQube Scanner` с идентификатором инструмента `sonar-scanner` (`sonarqube` -> `sonarScannerToolName`).
|
* Если использование `sonar-scanner` из переменной окружения `PATH` выключено, предполагается наличие настроенного глобального инструмента `SonarQube Scanner` с идентификатором инструмента `sonar-scanner` (`sonarqube` -> `sonarScannerToolName`).
|
||||||
* Версия из корня конфигурации передается утилите `sonar-scanner` как значение параметра `sonar.projectVersion=$configurationVersion`.
|
* Если разработка ведется с использованием подсистемы [БСП "Обновление версии ИБ"](https://its.1c.ru/db/bsp315doc#content:4:1:issogl1_обновление_версии_иб), то в значение параметра `sonar.projectVersion=$configurationVersion` утилиты `sonar-scanner` можно передавать версию из созданного общего модуля.
|
||||||
|
Для этого необходимо заполнить параметр (`sonarqube` -> `infoBaseUpdateModuleName`). Если параметр не заполнен, версия передается из корня конфигурации.
|
||||||
* Если выполнялась валидация EDT, результаты валидации в формате `generic issues` передаются утилите `sonar-scanner` как значение параметра `sonar.externalIssuesReportPaths`.
|
* Если выполнялась валидация EDT, результаты валидации в формате `generic issues` передаются утилите `sonar-scanner` как значение параметра `sonar.externalIssuesReportPaths`.
|
||||||
|
@@ -42,7 +42,8 @@
|
|||||||
"sonarqube": {
|
"sonarqube": {
|
||||||
"sonarQubeInstallation": "",
|
"sonarQubeInstallation": "",
|
||||||
"useSonarScannerFromPath": true,
|
"useSonarScannerFromPath": true,
|
||||||
"sonarScannerToolName": "sonar-scanner"
|
"sonarScannerToolName": "sonar-scanner",
|
||||||
|
"infoBaseUpdateModuleName" : ""
|
||||||
},
|
},
|
||||||
"syntaxCheck": {
|
"syntaxCheck": {
|
||||||
"groupErrorsByMetadata": true,
|
"groupErrorsByMetadata": true,
|
||||||
|
@@ -169,6 +169,10 @@
|
|||||||
"sonarScannerToolName" : {
|
"sonarScannerToolName" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Имя настроенной утилиты sonar-scanner.\nПрименяется, если useSonarScannerFromPath установлено в false."
|
"description" : "Имя настроенной утилиты sonar-scanner.\nПрименяется, если useSonarScannerFromPath установлено в false."
|
||||||
|
},
|
||||||
|
"infoBaseUpdateModuleName" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.\n Версия должна задаваться в виде присвоения `Описание.Версия = \"ваш номер версии\";`\n "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@@ -20,6 +20,11 @@ class SonarQubeOptions implements Serializable {
|
|||||||
)
|
)
|
||||||
String sonarScannerToolName
|
String sonarScannerToolName
|
||||||
|
|
||||||
|
@JsonPropertyDescription("""Имя общего модуля (например, ОбновлениеИнформационнойБазыXXX), в котором указана версия библиотеки.
|
||||||
|
Версия должна задаваться в виде присвоения `Описание.Версия = "ваш номер версии";`
|
||||||
|
""")
|
||||||
|
String infoBaseUpdateModuleName
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NonCPS
|
@NonCPS
|
||||||
String toString() {
|
String toString() {
|
||||||
@@ -27,6 +32,7 @@ class SonarQubeOptions implements Serializable {
|
|||||||
"useSonarScannerFromPath=" + useSonarScannerFromPath +
|
"useSonarScannerFromPath=" + useSonarScannerFromPath +
|
||||||
", sonarScannerToolName='" + sonarScannerToolName + '\'' +
|
", sonarScannerToolName='" + sonarScannerToolName + '\'' +
|
||||||
", sonarQubeInstallation='" + sonarQubeInstallation + '\'' +
|
", sonarQubeInstallation='" + sonarQubeInstallation + '\'' +
|
||||||
|
", infoBaseUpdateModuleName='" + infoBaseUpdateModuleName + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,15 +10,9 @@ import ru.pulsar.jenkins.library.utils.VersionParser
|
|||||||
class SonarScanner implements Serializable {
|
class SonarScanner implements Serializable {
|
||||||
|
|
||||||
private final JobConfiguration config;
|
private final JobConfiguration config;
|
||||||
private final String rootFile
|
|
||||||
|
|
||||||
SonarScanner(JobConfiguration config) {
|
SonarScanner(JobConfiguration config) {
|
||||||
this.config = config
|
this.config = config
|
||||||
if (config.sourceFormat == SourceFormat.EDT){
|
|
||||||
this.rootFile = "$config.srcDir/src/Configuration/Configuration.mdo"
|
|
||||||
} else {
|
|
||||||
this.rootFile = "$config.srcDir/Configuration.xml"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def run() {
|
def run() {
|
||||||
@@ -44,15 +38,9 @@ class SonarScanner implements Serializable {
|
|||||||
|
|
||||||
String sonarCommand = "$sonarScannerBinary -Dsonar.branch.name=$env.BRANCH_NAME"
|
String sonarCommand = "$sonarScannerBinary -Dsonar.branch.name=$env.BRANCH_NAME"
|
||||||
|
|
||||||
String configurationVersion
|
String projectVersion = computeProjectVersion()
|
||||||
if (config.sourceFormat == SourceFormat.EDT) {
|
if (projectVersion) {
|
||||||
configurationVersion = VersionParser.edt(rootFile)
|
sonarCommand += " -Dsonar.projectVersion=$projectVersion"
|
||||||
} else {
|
|
||||||
configurationVersion = VersionParser.configuration(rootFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (configurationVersion) {
|
|
||||||
sonarCommand += " -Dsonar.projectVersion=$configurationVersion"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.stageFlags.edtValidate) {
|
if (config.stageFlags.edtValidate) {
|
||||||
@@ -69,4 +57,27 @@ class SonarScanner implements Serializable {
|
|||||||
steps.cmd(sonarCommand)
|
steps.cmd(sonarCommand)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String computeProjectVersion() {
|
||||||
|
String projectVersion
|
||||||
|
String nameOfModule = config.sonarQubeOptions.infoBaseUpdateModuleName
|
||||||
|
|
||||||
|
if (!nameOfModule.isEmpty()) {
|
||||||
|
String rootFile
|
||||||
|
if (config.sourceFormat == SourceFormat.EDT) {
|
||||||
|
rootFile = "$config.srcDir/src/CommonModules/$nameOfModule/Module.bsl"
|
||||||
|
} else {
|
||||||
|
rootFile = "$config.srcDir/CommonModules/$nameOfModule/Ext/Module.bsl"
|
||||||
|
}
|
||||||
|
projectVersion = VersionParser.ssl(rootFile)
|
||||||
|
} else if (config.sourceFormat == SourceFormat.EDT) {
|
||||||
|
String rootFile = "$config.srcDir/src/Configuration/Configuration.mdo"
|
||||||
|
projectVersion = VersionParser.edt(rootFile)
|
||||||
|
} else {
|
||||||
|
String rootFile = "$config.srcDir/Configuration.xml"
|
||||||
|
projectVersion = VersionParser.configuration(rootFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
return projectVersion
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,7 @@ import java.util.regex.Pattern
|
|||||||
|
|
||||||
class VersionParser implements Serializable {
|
class VersionParser implements Serializable {
|
||||||
final static VERSION_REGEXP = ~/(?i)<version>(.*)<\/version>/
|
final static VERSION_REGEXP = ~/(?i)<version>(.*)<\/version>/
|
||||||
|
final static VERSION_REGEXP_SSL = ~/(?i)Описание.Версия = "(.*)";/
|
||||||
|
|
||||||
static String configuration(rootFile = 'src/cf/Configuration.xml') {
|
static String configuration(rootFile = 'src/cf/Configuration.xml') {
|
||||||
return extractVersionFromFile(rootFile, VERSION_REGEXP)
|
return extractVersionFromFile(rootFile, VERSION_REGEXP)
|
||||||
@@ -21,6 +22,10 @@ class VersionParser implements Serializable {
|
|||||||
return extractVersionFromFile(versionFile, VERSION_REGEXP)
|
return extractVersionFromFile(versionFile, VERSION_REGEXP)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String ssl(versionFile) {
|
||||||
|
return extractVersionFromFile(versionFile, VERSION_REGEXP_SSL)
|
||||||
|
}
|
||||||
|
|
||||||
private static String extractVersionFromFile(String filePath, Pattern regexp) {
|
private static String extractVersionFromFile(String filePath, Pattern regexp) {
|
||||||
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user