You've already forked jenkins-lib
forked from jenkins/jenkins-lib
BDD шаг
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
"stages": {
|
||||
"initSteps": false,
|
||||
"sonarqube": false,
|
||||
"bdd": false,
|
||||
"syntaxCheck": false,
|
||||
"edtValidate": false,
|
||||
"smoke": false
|
||||
@@ -16,6 +17,11 @@
|
||||
"runMigration": true,
|
||||
"additionalMigrationSteps": []
|
||||
},
|
||||
"bddOptions": {
|
||||
"vrunnerSteps": [
|
||||
"vanessa --settings ./tools/vrunner.json"
|
||||
]
|
||||
},
|
||||
"sonarqube": {
|
||||
"sonarQubeInstallation": "",
|
||||
"useSonarScannerFromPath": true,
|
||||
|
@@ -49,6 +49,10 @@
|
||||
"initSteps" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Предварительные шаги инициализации включены"
|
||||
},
|
||||
"bdd" : {
|
||||
"type" : "boolean",
|
||||
"description" : "Запуск BDD сценариев включен"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -70,6 +74,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"bddOptions" : {
|
||||
"type" : "object",
|
||||
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:BddOptions",
|
||||
"description" : "Настройки шага запуска BDD сценариев",
|
||||
"properties" : {
|
||||
"vrunnerSteps" : {
|
||||
"type" : "array",
|
||||
"description" : "Шаги, запускаемые через vrunner.\n В каждой строке передается отдельная команда \n vrunner и ее аргументы (например, \"vanessa --settings ./tools/vrunner.json\").\n По умолчанию содержит одну команду \"vanessa --settings ./tools/vrunner.json\".\n ",
|
||||
"items" : {
|
||||
"type" : "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sonarqube" : {
|
||||
"type" : "object",
|
||||
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:SonarQubeOptions",
|
||||
|
@@ -53,4 +53,6 @@ interface IStepExecutor {
|
||||
def error(String errorMessage)
|
||||
|
||||
def allure(List<String> results)
|
||||
|
||||
def installLocalDependencies()
|
||||
}
|
@@ -128,4 +128,9 @@ class StepExecutor implements IStepExecutor {
|
||||
results: ResultsConfig.convertPaths(results)
|
||||
])
|
||||
}
|
||||
|
||||
@Override
|
||||
def installLocalDependencies() {
|
||||
steps.installLocalDependencies()
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,26 @@
|
||||
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 BddOptions implements Serializable {
|
||||
|
||||
@JsonPropertyDescription("""Шаги, запускаемые через vrunner.
|
||||
В каждой строке передается отдельная команда
|
||||
vrunner и ее аргументы (например, "vanessa --settings ./tools/vrunner.json").
|
||||
По умолчанию содержит одну команду "vanessa --settings ./tools/vrunner.json".
|
||||
""")
|
||||
String[] vrunnerSteps = [
|
||||
'vanessa --settings ./tools/vrunner.json'
|
||||
]
|
||||
|
||||
@Override
|
||||
@NonCPS
|
||||
String toString() {
|
||||
return "BddOptions{" +
|
||||
"vrunnerSteps=" + vrunnerSteps +
|
||||
'}';
|
||||
}
|
||||
}
|
@@ -7,6 +7,8 @@ import org.apache.commons.beanutils.BeanUtils
|
||||
import ru.pulsar.jenkins.library.IStepExecutor
|
||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||
|
||||
import javax.annotation.CheckForNull
|
||||
|
||||
class ConfigurationReader implements Serializable {
|
||||
|
||||
private static ObjectMapper mapper
|
||||
@@ -42,6 +44,7 @@ class ConfigurationReader implements Serializable {
|
||||
"secrets",
|
||||
"stageFlags",
|
||||
"initInfobaseOptions",
|
||||
"bddOptions",
|
||||
"sonarQubeOptions",
|
||||
"syntaxCheckOptions",
|
||||
"resultsTransformOptions"
|
||||
@@ -49,6 +52,7 @@ class ConfigurationReader implements Serializable {
|
||||
|
||||
mergeObjects(baseConfiguration, configurationToMerge, nonMergeableSettings)
|
||||
mergeInitInfobaseOptions(baseConfiguration.initInfobaseOptions, configurationToMerge.initInfobaseOptions);
|
||||
mergeBddOptions(baseConfiguration.bddOptions, configurationToMerge.bddOptions);
|
||||
|
||||
return baseConfiguration;
|
||||
}
|
||||
@@ -74,7 +78,18 @@ class ConfigurationReader implements Serializable {
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
private static void mergeInitInfobaseOptions(InitInfobaseOptions baseObject, InitInfobaseOptions objectToMerge) {
|
||||
private static void mergeInitInfobaseOptions(InitInfobaseOptions baseObject, @CheckForNull InitInfobaseOptions objectToMerge) {
|
||||
if (objectToMerge == null || objectToMerge.additionalMigrationSteps == null) {
|
||||
return
|
||||
}
|
||||
baseObject.additionalMigrationSteps = objectToMerge.additionalMigrationSteps.clone()
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
private static void mergeBddOptions(BddOptions baseObject, @CheckForNull BddOptions objectToMerge) {
|
||||
if (objectToMerge == null || objectToMerge.vrunnerSteps == null) {
|
||||
return
|
||||
}
|
||||
baseObject.vrunnerSteps = objectToMerge.vrunnerSteps.clone()
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,10 @@ class JobConfiguration implements Serializable {
|
||||
@JsonPropertyDescription("Настройки шага инициализации ИБ")
|
||||
InitInfobaseOptions initInfobaseOptions;
|
||||
|
||||
@JsonProperty("bddOptions")
|
||||
@JsonPropertyDescription("Настройки шага запуска BDD сценариев")
|
||||
BddOptions bddOptions;
|
||||
|
||||
@JsonProperty("sonarqube")
|
||||
@JsonPropertyDescription("Настройки анализа SonarQube")
|
||||
SonarQubeOptions sonarQubeOptions;
|
||||
@@ -45,6 +49,7 @@ class JobConfiguration implements Serializable {
|
||||
", stageFlags=" + stageFlags +
|
||||
", secrets=" + secrets +
|
||||
", initInfobaseOptions=" + initInfobaseOptions +
|
||||
", bddOptions=" + bddOptions +
|
||||
", sonarQubeOptions=" + sonarQubeOptions +
|
||||
", syntaxCheckOptions=" + syntaxCheckOptions +
|
||||
", resultsTransformOptions=" + resultsTransformOptions +
|
||||
|
@@ -21,6 +21,9 @@ class StageFlags implements Serializable {
|
||||
@JsonPropertyDescription("Предварительные шаги инициализации включены")
|
||||
boolean initSteps
|
||||
|
||||
@JsonPropertyDescription("Запуск BDD сценариев включен")
|
||||
boolean bdd
|
||||
|
||||
@Override
|
||||
@NonCPS
|
||||
String toString() {
|
||||
@@ -30,10 +33,11 @@ class StageFlags implements Serializable {
|
||||
", edtValidate=" + edtValidate +
|
||||
", smoke=" + smoke +
|
||||
", initSteps=" + initSteps +
|
||||
", bdd=" + bdd +
|
||||
'}';
|
||||
}
|
||||
|
||||
boolean needInfobase() {
|
||||
return smoke || syntaxCheck || initSteps
|
||||
return smoke || syntaxCheck || initSteps || bdd
|
||||
}
|
||||
}
|
||||
|
46
src/ru/pulsar/jenkins/library/steps/Bdd.groovy
Normal file
46
src/ru/pulsar/jenkins/library/steps/Bdd.groovy
Normal file
@@ -0,0 +1,46 @@
|
||||
package ru.pulsar.jenkins.library.steps
|
||||
|
||||
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 Bdd implements Serializable {
|
||||
|
||||
private final JobConfiguration config;
|
||||
|
||||
Bdd(JobConfiguration config) {
|
||||
this.config = config
|
||||
}
|
||||
|
||||
def run() {
|
||||
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
||||
|
||||
Logger.printLocation()
|
||||
|
||||
if (!config.stageFlags.bdd) {
|
||||
Logger.println("BDD step is disabled")
|
||||
return
|
||||
}
|
||||
|
||||
steps.installLocalDependencies()
|
||||
|
||||
steps.createDir('build/out')
|
||||
|
||||
// TODO: удалить после выхода VAS 1.0.35
|
||||
steps.httpRequest(
|
||||
'https://cloud.svc.pulsar.ru/index.php/s/WKwmqpFXSjfYjAH/download',
|
||||
'oscript_modules/vanessa-automation-single/vanessa-automation-single.epf'
|
||||
)
|
||||
|
||||
steps.catchError {
|
||||
config.bddOptions.vrunnerSteps.each {
|
||||
Logger.println("Шаг запуска сценариев командой ${it}")
|
||||
steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"")
|
||||
}
|
||||
}
|
||||
|
||||
steps.stash('bdd-allure', 'build/out/allure/**', true)
|
||||
steps.stash('bdd-cucumber', 'build/out/cucumber/**', true)
|
||||
}
|
||||
}
|
@@ -46,6 +46,8 @@ class ConfigurationReaderTest {
|
||||
|
||||
assertThat(jobConfiguration.getInitInfobaseOptions().getRunMigration()).isFalse();
|
||||
assertThat(jobConfiguration.getInitInfobaseOptions().getAdditionalMigrationSteps()).contains("vanessa --settings ./tools/vrunner.first.json");
|
||||
|
||||
assertThat(jobConfiguration.getBddOptions().getVrunnerSteps()).contains("vanessa --settings ./tools/vrunner.json");
|
||||
}
|
||||
|
||||
}
|
10
vars/bdd.groovy
Normal file
10
vars/bdd.groovy
Normal file
@@ -0,0 +1,10 @@
|
||||
import ru.pulsar.jenkins.library.configuration.JobConfiguration
|
||||
import ru.pulsar.jenkins.library.ioc.ContextRegistry
|
||||
import ru.pulsar.jenkins.library.steps.Bdd
|
||||
|
||||
def call(JobConfiguration config) {
|
||||
ContextRegistry.registerDefaultContext(this)
|
||||
|
||||
def bdd = new Bdd(config)
|
||||
bdd.run()
|
||||
}
|
@@ -113,6 +113,17 @@ void call() {
|
||||
}
|
||||
}
|
||||
|
||||
stage('BDD сценарии') {
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { config.stageFlags.bdd }
|
||||
}
|
||||
steps {
|
||||
// Инициализация и первичная миграция
|
||||
bdd config
|
||||
}
|
||||
}
|
||||
|
||||
stage('Синтаксический контроль') {
|
||||
agent {
|
||||
label agent1C
|
||||
|
Reference in New Issue
Block a user