You've already forked jenkins-lib
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:
@@ -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
|
||||
},
|
||||
|
@@ -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",
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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 +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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 +
|
||||
'}'
|
||||
|
@@ -40,10 +40,9 @@ class InitInfoBaseOptions implements Serializable {
|
||||
""")
|
||||
String templateDBPath
|
||||
|
||||
@JsonPropertyDescription("""
|
||||
Сохранить базу после выполнения всех шагов инициализации
|
||||
@JsonPropertyDescription("""Настройки сохранения базы после выполнения всех шагов
|
||||
""")
|
||||
Boolean archiveInfobase
|
||||
ArchiveInfobaseOptions archiveInfobase
|
||||
|
||||
@JsonPropertyDescription("Массив расширений для загрузки в конфигурацию.")
|
||||
Extension[] extensions
|
||||
|
41
src/ru/pulsar/jenkins/library/steps/ZipInfobase.groovy
Normal file
41
src/ru/pulsar/jenkins/library/steps/ZipInfobase.groovy
Normal 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)
|
||||
}
|
||||
}
|
@@ -144,7 +144,7 @@ void call() {
|
||||
timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) {
|
||||
printLocation()
|
||||
|
||||
zipInfobase(config)
|
||||
zipInfobase config, 'initInfobase'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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()
|
||||
}
|
||||
|
Reference in New Issue
Block a user