1
0
mirror of https://github.com/firstBitMarksistskaya/jenkins-lib.git synced 2025-08-25 20:09:25 +02:00

пgeneralize archive infobase

This commit is contained in:
Dima
2025-01-18 16:03:42 +03:00
parent ca6b1b4478
commit b92c12eae4
9 changed files with 144 additions and 25 deletions

View File

@@ -45,13 +45,24 @@
"additionalInitializationSteps": [], "additionalInitializationSteps": [],
"templateDBPath": "", "templateDBPath": "",
"vrunnerSettings": "./tools/vrunner.json", "vrunnerSettings": "./tools/vrunner.json",
"archiveInfobase": false, "archiveInfobase": {
"onAlways": false,
"onFailure": true,
"onUnstable": false,
"onSuccess": false
},
"extensions": [] "extensions": []
}, },
"bdd": { "bdd": {
"vrunnerSteps": [ "vrunnerSteps": [
"vanessa --settings ./tools/vrunner.json" "vanessa --settings ./tools/vrunner.json"
], ],
"archiveInfobase": {
"onAlways": false,
"onFailure": true,
"onUnstable": false,
"onSuccess": false
},
"coverage": false, "coverage": false,
"dbgsPort": 1550 "dbgsPort": 1550
}, },
@@ -59,7 +70,7 @@
"sonarQubeInstallation": "", "sonarQubeInstallation": "",
"useSonarScannerFromPath": true, "useSonarScannerFromPath": true,
"sonarScannerToolName": "sonar-scanner", "sonarScannerToolName": "sonar-scanner",
"infoBaseUpdateModuleName" : "", "infoBaseUpdateModuleName": "",
"branchAnalysisConfiguration": "fromEnv", "branchAnalysisConfiguration": "fromEnv",
"waitForQualityGate": false "waitForQualityGate": false
}, },

View File

@@ -1,6 +1,27 @@
{ {
"$schema" : "http://json-schema.org/draft-07/schema#", "$schema" : "http://json-schema.org/draft-07/schema#",
"definitions" : { "definitions" : {
"ArchiveInfobaseOptions" : {
"type" : "object",
"properties" : {
"onAlways" : {
"type" : "boolean",
"description" : "Сохранять всегда"
},
"onFailure" : {
"type" : "boolean",
"description" : "Сохранять при падении сборки"
},
"onSuccess" : {
"type" : "boolean",
"description" : "Сохранять при успешной сборке"
},
"onUnstable" : {
"type" : "boolean",
"description" : "Сохранять при нестабильной сборке"
}
}
},
"EmailExtConfiguration" : { "EmailExtConfiguration" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
@@ -28,15 +49,22 @@
"bdd" : { "bdd" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"archiveInfobase" : {
"allOf" : [ {
"$ref" : "#/definitions/ArchiveInfobaseOptions"
}, {
"description" : "Настройки сохранения базы после выполнения всех шагов\n "
} ]
},
"coverage" : { "coverage" : {
"type" : "boolean", "type" : "boolean",
"description" : "Выполнять замер покрытия", "description" : "Выполнять замер покрытия",
"default" : false "default" : "false"
}, },
"dbgsPort" : { "dbgsPort" : {
"type" : "integer", "type" : "integer",
"description" : "Порт, на котором будет запущен сервер отладки для замера покрытия", "description" : "Порт, на котором будет запущен сервер отладки для замера покрытия",
"default" : 1550 "default" : "1550"
}, },
"vrunnerSteps" : { "vrunnerSteps" : {
"description" : "Шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.json\").\n По умолчанию содержит одну команду \"vanessa --settings ./tools/vrunner.json\".\n ", "description" : "Шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.json\").\n По умолчанию содержит одну команду \"vanessa --settings ./tools/vrunner.json\".\n ",
@@ -80,6 +108,13 @@
"type" : "string" "type" : "string"
} }
}, },
"archiveInfobase" : {
"allOf" : [ {
"$ref" : "#/definitions/ArchiveInfobaseOptions"
}, {
"description" : "Настройки сохранения базы после выполнения всех шагов\n "
} ]
},
"extensions" : { "extensions" : {
"description" : "Массив расширений для загрузки в конфигурацию.", "description" : "Массив расширений для загрузки в конфигурацию.",
"type" : "array", "type" : "array",
@@ -119,10 +154,6 @@
"type" : "boolean", "type" : "boolean",
"description" : "Запустить миграцию ИБ" "description" : "Запустить миграцию ИБ"
}, },
"archiveInfobase" : {
"type" : "boolean",
"description" : "\n Сохранить базу после выполнения всех шагов инициализации\n "
},
"templateDBPath" : { "templateDBPath" : {
"type" : "string", "type" : "string",
"description" : "\n Путь к файлу эталонной базы данных.\n * По умолчанию не заполнен;\n * Указывается путь к файлу *.dt или *.1CD.\n " "description" : "\n Путь к файлу эталонной базы данных.\n * По умолчанию не заполнен;\n * Указывается путь к файлу *.dt или *.1CD.\n "
@@ -254,12 +285,12 @@
"coverage" : { "coverage" : {
"type" : "boolean", "type" : "boolean",
"description" : "Выполнять замер покрытия", "description" : "Выполнять замер покрытия",
"default" : false "default" : "false"
}, },
"dbgsPort" : { "dbgsPort" : {
"type" : "integer", "type" : "integer",
"description" : "Порт, на котором будет запущен сервер отладки для замера покрытия", "description" : "Порт, на котором будет запущен сервер отладки для замера покрытия",
"default" : 1550 "default" : "1550"
}, },
"publishToAllureReport" : { "publishToAllureReport" : {
"type" : "boolean", "type" : "boolean",
@@ -385,12 +416,12 @@
"publishToAllureReport" : { "publishToAllureReport" : {
"type" : "boolean", "type" : "boolean",
"description" : "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n ", "description" : "Выполнять публикацию результатов в отчет Allure.\n По умолчанию выключено.\n ",
"default": false "default" : "false"
}, },
"publishToJUnitReport" : { "publishToJUnitReport" : {
"type" : "boolean", "type" : "boolean",
"description" : "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n ", "description" : "Выполнять публикацию результатов в отчет JUnit.\n По умолчанию включено.\n ",
"default": true "default" : "true"
}, },
"vrunnerSettings" : { "vrunnerSettings" : {
"type" : "string", "type" : "string",
@@ -479,12 +510,12 @@
"coverage" : { "coverage" : {
"type" : "boolean", "type" : "boolean",
"description" : "Выполнять замер покрытия", "description" : "Выполнять замер покрытия",
"default" : false "default" : "false"
}, },
"dbgsPort" : { "dbgsPort" : {
"type" : "integer", "type" : "integer",
"description" : "Порт, на котором будет запущен сервер отладки для замера покрытия", "description" : "Порт, на котором будет запущен сервер отладки для замера покрытия",
"default" : 1550 "default" : "1550"
}, },
"publishToAllureReport" : { "publishToAllureReport" : {
"type" : "boolean", "type" : "boolean",

View File

@@ -33,6 +33,7 @@ public class JobConfigurationSchemaGenerator {
writer.write(jsonSchema.toPrettyString()); writer.write(jsonSchema.toPrettyString());
System.out.println(jsonSchema.toPrettyString()); System.out.println(jsonSchema.toPrettyString());
} catch (IOException e) { } catch (IOException e) {
//noinspection CallToPrintStackTrace
e.printStackTrace(); e.printStackTrace();
} }
} }

View File

@@ -0,0 +1,31 @@
package ru.pulsar.jenkins.library.configuration
import com.cloudbees.groovy.cps.NonCPS
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonPropertyDescription
@JsonIgnoreProperties(ignoreUnknown = true)
class ArchiveInfobaseOptions implements Serializable {
@JsonPropertyDescription("Сохранять всегда")
Boolean onAlways = false
@JsonPropertyDescription("Сохранять при успешной сборке")
Boolean onSuccess = false
@JsonPropertyDescription("Сохранять при падении сборки")
Boolean onFailure = false
@JsonPropertyDescription("Сохранять при нестабильной сборке")
Boolean onUnstable = false
@Override
@NonCPS
String toString() {
return "ArchiveInfobaseOptions{" +
"onAlways=" + onAlways +
", onSuccess=" + onSuccess +
", onFailure=" + onFailure +
", onUnstable=" + onUnstable +
'}';
}
}

View File

@@ -16,11 +16,16 @@ class BddOptions extends StepCoverageOptions implements Serializable {
'vanessa --settings ./tools/vrunner.json' 'vanessa --settings ./tools/vrunner.json'
] ]
@JsonPropertyDescription("""Настройки сохранения базы после выполнения всех шагов
""")
ArchiveInfobaseOptions archiveInfobase
@Override @Override
@NonCPS @NonCPS
String toString() { String toString() {
return "BddOptions{" + return "BddOptions{" +
"vrunnerSteps=" + vrunnerSteps + "vrunnerSteps=" + vrunnerSteps +
"archiveInfobase=" + archiveInfobase +
"coverage=" + coverage + "coverage=" + coverage +
"dbgsPort=" + dbgsPort + "dbgsPort=" + dbgsPort +
'}' '}'

View File

@@ -40,10 +40,9 @@ class InitInfoBaseOptions implements Serializable {
""") """)
String templateDBPath String templateDBPath
@JsonPropertyDescription(""" @JsonPropertyDescription("""Настройки сохранения базы после выполнения всех шагов
Сохранить базу после выполнения всех шагов инициализации
""") """)
Boolean archiveInfobase ArchiveInfobaseOptions archiveInfobase
@JsonPropertyDescription("Массив расширений для загрузки в конфигурацию.") @JsonPropertyDescription("Массив расширений для загрузки в конфигурацию.")
Extension[] extensions Extension[] extensions

View File

@@ -0,0 +1,41 @@
package ru.pulsar.jenkins.library.steps
import hudson.model.Result
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
class ZipInfobase implements Serializable {
private final JobConfiguration config
private final String stage
ZipInfobase(JobConfiguration config, String stage) {
this.config = config
this.stage = stage
}
def run() {
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
Logger.printLocation()
def currentBuild = steps.currentBuild()
def currentResult = Result.fromString(currentBuild.getCurrentResult())
def archiveInfobaseOptions = options.archiveInfobase
def archiveInfobase = false
if (archiveInfobaseOptions.onAlways
|| (archiveInfobaseOptions.onFailure && (currentResult == Result.FAILURE || currentResult == Result.ABORTED))
|| (archiveInfobaseOptions.onUnstable && currentResult == Result.UNSTABLE)
|| (archiveInfobaseOptions.onSuccess && currentResult == Result.SUCCESS)) {
archiveInfobase = true
}
def archiveName = "1Cv8.1CD.${stage}.zip"
steps.zip('build/ib', '1Cv8.1CD', archiveName, archiveInfobase)
steps.stash(archiveName, archiveName, false)
}
}

View File

@@ -144,7 +144,7 @@ void call() {
timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) { timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) {
printLocation() printLocation()
zipInfobase(config) zipInfobase config, 'initInfobase'
} }
} }
} }

View File

@@ -1,10 +1,10 @@
import ru.pulsar.jenkins.library.configuration.JobConfiguration import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.steps.ZipInfobase
def call(JobConfiguration config) { def call(JobConfiguration config, String stageName) {
ContextRegistry.registerDefaultContext(this)
def archiveName = '1Cv8.1CD.zip'
zip dir: 'build/ib', glob: '1Cv8.1CD', zipFile: archiveName, archive: config.initInfoBaseOptions.archiveInfobase
stash name: archiveName, includes: archiveName, allowEmpty: false
def zipInfobase = new ZipInfobase(config, stageName)
zipInfobase.run()
} }