You've already forked jenkins-lib
forked from jenkins/jenkins-lib
Merge pull request #66 from firstBitMarksistskaya/feature-overridable-options
This commit is contained in:
@@ -114,6 +114,7 @@ pipeline1C()
|
||||
* Если в корне репозитория существует файл `packagedef`, то в шагах, работающих с информационной базой, будет выполнена попытка установки локальных зависимостей средствами `opm`.
|
||||
* Если после установки локальных зависимостей в каталоге `oscript_modules/bin` существует файл `vrunner`, то для выполнения команд работы с информационной базой будет использоваться он, а не глобально установленный `vrunner` из `PATH`.
|
||||
* Результаты в формате `allure` ожидаются в каталоге `build/out/allure` или его подкаталогах.
|
||||
* Каждый шаг имеет свой таймаут в минутах (от 10 до 240 в зависимости от "тяжёлости" шага сборки), но может быть переопределен в секции настроек `timeout`.
|
||||
* Инициализация:
|
||||
* Информационная база инициализируется только в том случае, если в сборочной линии включены шаги, работающие с базой (например, `bdd` или `syntaxCheck`).
|
||||
* Информационная база инициализируется конфигурацией из хранилища конфигурации (`initInfobase` -> `initMethod`).
|
||||
|
@@ -16,6 +16,19 @@
|
||||
"edtValidate": false,
|
||||
"smoke": false
|
||||
},
|
||||
"timeout": {
|
||||
"smoke": 240,
|
||||
"bdd": 120,
|
||||
"createInfoBase": 60,
|
||||
"designerToEdtFormatTransformation": 60,
|
||||
"edtToDesignerFormatTransformation": 60,
|
||||
"edtValidate": 240,
|
||||
"initInfoBase": 60,
|
||||
"resultTransformation": 10,
|
||||
"sonarqube": 90,
|
||||
"syntaxCheck": 240,
|
||||
"zipInfoBase": 60
|
||||
},
|
||||
"initInfobase": {
|
||||
"initMethod": "fromStorage",
|
||||
"runMigration": true,
|
||||
|
@@ -65,6 +65,57 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeout" : {
|
||||
"type" : "object",
|
||||
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:TimeoutOptions",
|
||||
"description" : "Настройка таймаутов для шагов",
|
||||
"properties" : {
|
||||
"edtToDesignerFormatTransformation" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага трансформации исходников из формата EDT в формат Конфигуратора, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||
},
|
||||
"createInfoBase" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага создания информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||
},
|
||||
"initInfoBase" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага инициализации информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||
},
|
||||
"zipInfoBase" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага архивирования информационной базы, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||
},
|
||||
"designerToEdtFormatTransformation" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага трансформации исходников из формата Конфигуратора в формат EDT, в минутах.\n По умолчанию содержит значение 60.\n "
|
||||
},
|
||||
"edtValidate" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага валидации EDT, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||
},
|
||||
"resultTransformation" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага трансформации результатов EDT, в минутах.\n По умолчанию содержит значение 10.\n "
|
||||
},
|
||||
"bdd" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага проверки сценариев поведения, в минутах.\n По умолчанию содержит значение 120.\n "
|
||||
},
|
||||
"syntaxCheck" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага синтаксического контроля, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||
},
|
||||
"smoke" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага дымовых тестов, в минутах.\n По умолчанию содержит значение 240.\n "
|
||||
},
|
||||
"sonarqube" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут шага статического анализа SonarQube, в минутах.\n По умолчанию содержит значение 90.\n "
|
||||
}
|
||||
}
|
||||
},
|
||||
"initInfobase" : {
|
||||
"type" : "object",
|
||||
"id" : "urn:jsonschema:ru:pulsar:jenkins:library:configuration:InitInfobaseOptions",
|
||||
|
@@ -56,6 +56,7 @@ class ConfigurationReader implements Serializable {
|
||||
def nonMergeableSettings = Arrays.asList(
|
||||
"secrets",
|
||||
"stageFlags",
|
||||
"timeoutOptions",
|
||||
"initInfobaseOptions",
|
||||
"bddOptions",
|
||||
"sonarQubeOptions",
|
||||
|
@@ -22,6 +22,10 @@ class JobConfiguration implements Serializable {
|
||||
@JsonPropertyDescription("Включение этапов сборок")
|
||||
StageFlags stageFlags;
|
||||
|
||||
@JsonProperty("timeout")
|
||||
@JsonPropertyDescription("Настройка таймаутов для шагов")
|
||||
TimeoutOptions timeoutOptions;
|
||||
|
||||
@JsonPropertyDescription("Имя ветки по умолчанию. Значение по умолчанию - main.")
|
||||
String defaultBranch
|
||||
|
||||
@@ -63,8 +67,9 @@ class JobConfiguration implements Serializable {
|
||||
"v8version='" + v8version + '\'' +
|
||||
", srcDir='" + srcDir + '\'' +
|
||||
", sourceFormat=" + sourceFormat +
|
||||
", defaultBranch=" + defaultBranch +
|
||||
", stageFlags=" + stageFlags +
|
||||
", timeoutOptions=" + timeoutOptions +
|
||||
", defaultBranch='" + defaultBranch + '\'' +
|
||||
", secrets=" + secrets +
|
||||
", initInfobaseOptions=" + initInfobaseOptions +
|
||||
", bddOptions=" + bddOptions +
|
||||
@@ -72,11 +77,11 @@ class JobConfiguration implements Serializable {
|
||||
", syntaxCheckOptions=" + syntaxCheckOptions +
|
||||
", smokeTestOptions=" + smokeTestOptions +
|
||||
", resultsTransformOptions=" + resultsTransformOptions +
|
||||
", logosConfig=" + logosConfig +
|
||||
", logosConfig='" + logosConfig + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
boolean infobaseFromFiles(){
|
||||
boolean infobaseFromFiles() {
|
||||
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
|
||||
def env = steps.env();
|
||||
String branchName = env.BRANCH_NAME;
|
||||
|
@@ -0,0 +1,63 @@
|
||||
package ru.pulsar.jenkins.library.configuration
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyDescription
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class TimeoutOptions implements Serializable {
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага трансформации исходников из формата EDT в формат Конфигуратора, в минутах.
|
||||
По умолчанию содержит значение 60.
|
||||
''')
|
||||
Integer edtToDesignerFormatTransformation
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага создания информационной базы, в минутах.
|
||||
По умолчанию содержит значение 60.
|
||||
''')
|
||||
Integer createInfoBase
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага инициализации информационной базы, в минутах.
|
||||
По умолчанию содержит значение 60.
|
||||
''')
|
||||
Integer initInfoBase
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага архивирования информационной базы, в минутах.
|
||||
По умолчанию содержит значение 60.
|
||||
''')
|
||||
Integer zipInfoBase
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага трансформации исходников из формата Конфигуратора в формат EDT, в минутах.
|
||||
По умолчанию содержит значение 60.
|
||||
''')
|
||||
Integer designerToEdtFormatTransformation
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага валидации EDT, в минутах.
|
||||
По умолчанию содержит значение 240.
|
||||
''')
|
||||
Integer edtValidate
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага трансформации результатов EDT, в минутах.
|
||||
По умолчанию содержит значение 10.
|
||||
''')
|
||||
Integer resultTransformation
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага проверки сценариев поведения, в минутах.
|
||||
По умолчанию содержит значение 120.
|
||||
''')
|
||||
Integer bdd
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага синтаксического контроля, в минутах.
|
||||
По умолчанию содержит значение 240.
|
||||
''')
|
||||
Integer syntaxCheck
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага дымовых тестов, в минутах.
|
||||
По умолчанию содержит значение 240.
|
||||
''')
|
||||
Integer smoke
|
||||
|
||||
@JsonPropertyDescription('''Таймаут шага статического анализа SonarQube, в минутах.
|
||||
По умолчанию содержит значение 90.
|
||||
''')
|
||||
Integer sonarqube
|
||||
}
|
@@ -54,6 +54,9 @@ class ConfigurationReaderTest {
|
||||
assertThat(jobConfiguration.getBddOptions().getVrunnerSteps()).contains("vanessa --settings ./tools/vrunner.json");
|
||||
|
||||
assertThat(jobConfiguration.getLogosConfig()).isEqualTo("logger.rootLogger=DEBUG");
|
||||
|
||||
assertThat(jobConfiguration.getTimeoutOptions().getBdd()).isEqualTo(120);
|
||||
assertThat(jobConfiguration.getTimeoutOptions().getZipInfoBase()).isEqualTo(123);
|
||||
}
|
||||
|
||||
}
|
@@ -6,6 +6,9 @@
|
||||
"stages": {
|
||||
"syntaxCheck": true
|
||||
},
|
||||
"timeout": {
|
||||
"zipInfoBase": 123
|
||||
},
|
||||
"initInfobase": {
|
||||
"runMigration": false,
|
||||
"additionalInitializationSteps": [
|
||||
|
@@ -19,7 +19,6 @@ void call() {
|
||||
|
||||
options {
|
||||
buildDiscarder(logRotator(numToKeepStr: '30'))
|
||||
timeout(time: 2, unit: TimeUnit.HOURS)
|
||||
timestamps()
|
||||
}
|
||||
|
||||
@@ -29,6 +28,9 @@ void call() {
|
||||
agent {
|
||||
label 'agent'
|
||||
}
|
||||
options {
|
||||
timeout(time: 1, unit: TimeUnit.HOURS)
|
||||
}
|
||||
|
||||
steps {
|
||||
script {
|
||||
@@ -59,22 +61,25 @@ void call() {
|
||||
expression { config.stageFlags.needInfobase() && config.infobaseFromFiles() && config.sourceFormat == SourceFormat.EDT }
|
||||
}
|
||||
steps {
|
||||
edtToDesignerFormatTransformation config
|
||||
timeout(time: config.timeoutOptions.edtToDesignerFormatTransformation, unit: TimeUnit.MINUTES) {
|
||||
edtToDesignerFormatTransformation config
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Создание ИБ') {
|
||||
steps {
|
||||
createDir('build/out')
|
||||
timeout(time: config.timeoutOptions.createInfoBase, unit: TimeUnit.MINUTES) {
|
||||
createDir('build/out')
|
||||
|
||||
script {
|
||||
if (config.infobaseFromFiles()){
|
||||
// Создание базы загрузкой из файлов
|
||||
initFromFiles config
|
||||
}
|
||||
else{
|
||||
// Создание базы загрузкой конфигурации из хранилища
|
||||
initFromStorage config
|
||||
script {
|
||||
if (config.infobaseFromFiles()) {
|
||||
// Создание базы загрузкой из файлов
|
||||
initFromFiles config
|
||||
} else {
|
||||
// Создание базы загрузкой конфигурации из хранилища
|
||||
initFromStorage config
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,16 +91,20 @@ void call() {
|
||||
expression { config.stageFlags.initSteps }
|
||||
}
|
||||
steps {
|
||||
// Инициализация и первичная миграция
|
||||
initInfobase config
|
||||
timeout(time: config.timeoutOptions.initInfoBase, unit: TimeUnit.MINUTES) {
|
||||
// Инициализация и первичная миграция
|
||||
initInfobase config
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Архивация ИБ') {
|
||||
steps {
|
||||
printLocation()
|
||||
timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) {
|
||||
printLocation()
|
||||
|
||||
zipInfobase()
|
||||
zipInfobase()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -109,10 +118,12 @@ void call() {
|
||||
}
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { config.sourceFormat == SourceFormat.DESIGNER && config.stageFlags.edtValidate}
|
||||
expression { config.sourceFormat == SourceFormat.DESIGNER && config.stageFlags.edtValidate }
|
||||
}
|
||||
steps {
|
||||
designerToEdtFormatTransformation config
|
||||
timeout(time: config.timeoutOptions.designerToEdtFormatTransformation, unit: TimeUnit.MINUTES) {
|
||||
designerToEdtFormatTransformation config
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -131,7 +142,9 @@ void call() {
|
||||
label 'edt'
|
||||
}
|
||||
steps {
|
||||
edtValidate config
|
||||
timeout(time: config.timeoutOptions.edtValidate, unit: TimeUnit.MINUTES) {
|
||||
edtValidate config
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +153,9 @@ void call() {
|
||||
label 'oscript'
|
||||
}
|
||||
steps {
|
||||
transform config
|
||||
timeout(time: config.timeoutOptions.resultTransformation, unit: TimeUnit.MINUTES) {
|
||||
transform config
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,9 +170,11 @@ void call() {
|
||||
expression { config.stageFlags.bdd }
|
||||
}
|
||||
steps {
|
||||
unzipInfobase()
|
||||
|
||||
bdd config
|
||||
timeout(time: config.timeoutOptions.bdd, unit: TimeUnit.MINUTES) {
|
||||
unzipInfobase()
|
||||
|
||||
bdd config
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +187,9 @@ void call() {
|
||||
expression { config.stageFlags.syntaxCheck }
|
||||
}
|
||||
steps {
|
||||
syntaxCheck config
|
||||
timeout(time: config.timeoutOptions.syntaxCheck, unit: TimeUnit.MINUTES) {
|
||||
syntaxCheck config
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,9 +202,11 @@ void call() {
|
||||
expression { config.stageFlags.smoke }
|
||||
}
|
||||
steps {
|
||||
unzipInfobase()
|
||||
timeout(time: config.timeoutOptions.smoke, unit: TimeUnit.MINUTES) {
|
||||
unzipInfobase()
|
||||
|
||||
smoke config
|
||||
smoke config
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -200,7 +221,9 @@ void call() {
|
||||
expression { config.stageFlags.sonarqube }
|
||||
}
|
||||
steps {
|
||||
sonarScanner config
|
||||
timeout(time: config.timeoutOptions.sonarqube, unit: TimeUnit.MINUTES) {
|
||||
sonarScanner config
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user