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

View File

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

View File

@@ -33,7 +33,8 @@ public class JobConfigurationSchemaGenerator {
writer.write(jsonSchema.toPrettyString());
System.out.println(jsonSchema.toPrettyString());
} catch (IOException e) {
e.printStackTrace();
//noinspection CallToPrintStackTrace
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'
]
@JsonPropertyDescription("""Настройки сохранения базы после выполнения всех шагов
""")
ArchiveInfobaseOptions archiveInfobase
@Override
@NonCPS
String toString() {
return "BddOptions{" +
"vrunnerSteps=" + vrunnerSteps +
"archiveInfobase=" + archiveInfobase +
"coverage=" + coverage +
"dbgsPort=" + dbgsPort +
'}'

View File

@@ -40,10 +40,9 @@ class InitInfoBaseOptions implements Serializable {
""")
String templateDBPath
@JsonPropertyDescription("""
Сохранить базу после выполнения всех шагов инициализации
@JsonPropertyDescription("""Настройки сохранения базы после выполнения всех шагов
""")
Boolean archiveInfobase
ArchiveInfobaseOptions archiveInfobase
@JsonPropertyDescription("Массив расширений для загрузки в конфигурацию.")
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) {
printLocation()
zipInfobase(config)
zipInfobase config, 'initInfobase'
}
}
}

View File

@@ -1,10 +1,10 @@
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 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 call(JobConfiguration config, String stageName) {
ContextRegistry.registerDefaultContext(this)
def zipInfobase = new ZipInfobase(config, stageName)
zipInfobase.run()
}