You've already forked jenkins-lib
forked from jenkins/jenkins-lib
Раздельные таймауты для каждого stage
This commit is contained in:
@@ -16,7 +16,19 @@
|
||||
"edtValidate": false,
|
||||
"smoke": false
|
||||
},
|
||||
"stageTimeout": 2,
|
||||
"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",
|
||||
@@ -192,10 +243,6 @@
|
||||
"logosConfig" : {
|
||||
"type" : "string",
|
||||
"description" : "Конфигурация библиотеки logos. Применяется перед запуском каждой стадии сборки"
|
||||
},
|
||||
"stageTimeout" : {
|
||||
"type" : "integer",
|
||||
"description" : "Таймаут для выполнения шагов (в часах)"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
||||
@@ -56,10 +60,6 @@ class JobConfiguration implements Serializable {
|
||||
@JsonPropertyDescription("Конфигурация библиотеки logos. Применяется перед запуском каждой стадии сборки")
|
||||
String logosConfig;
|
||||
|
||||
@JsonProperty("stageTimeout")
|
||||
@JsonPropertyDescription("Таймаут для выполнения шагов (в часах)")
|
||||
Integer stageTimeout;
|
||||
|
||||
@Override
|
||||
@NonCPS
|
||||
String toString() {
|
||||
@@ -67,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 +
|
||||
@@ -76,12 +77,11 @@ class JobConfiguration implements Serializable {
|
||||
", syntaxCheckOptions=" + syntaxCheckOptions +
|
||||
", smokeTestOptions=" + smokeTestOptions +
|
||||
", resultsTransformOptions=" + resultsTransformOptions +
|
||||
", logosConfig=" + logosConfig +
|
||||
", stageTimeout=" + stageTimeout +
|
||||
", 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
|
||||
}
|
@@ -55,7 +55,8 @@ class ConfigurationReaderTest {
|
||||
|
||||
assertThat(jobConfiguration.getLogosConfig()).isEqualTo("logger.rootLogger=DEBUG");
|
||||
|
||||
assertThat(jobConfiguration.getStageTimeout()).isEqualTo(2);
|
||||
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": [
|
||||
|
@@ -61,7 +61,7 @@ void call() {
|
||||
expression { config.stageFlags.needInfobase() && config.infobaseFromFiles() && config.sourceFormat == SourceFormat.EDT }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.edtToDesignerFormatTransformation, unit: TimeUnit.MINUTES) {
|
||||
edtToDesignerFormatTransformation config
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ void call() {
|
||||
|
||||
stage('Создание ИБ') {
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.createInfoBase, unit: TimeUnit.MINUTES) {
|
||||
createDir('build/out')
|
||||
|
||||
script {
|
||||
@@ -91,7 +91,7 @@ void call() {
|
||||
expression { config.stageFlags.initSteps }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.initInfoBase, unit: TimeUnit.MINUTES) {
|
||||
// Инициализация и первичная миграция
|
||||
initInfobase config
|
||||
}
|
||||
@@ -100,7 +100,7 @@ void call() {
|
||||
|
||||
stage('Архивация ИБ') {
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.zipInfoBase, unit: TimeUnit.MINUTES) {
|
||||
printLocation()
|
||||
|
||||
zipInfobase()
|
||||
@@ -121,7 +121,7 @@ void call() {
|
||||
expression { config.sourceFormat == SourceFormat.DESIGNER && config.stageFlags.edtValidate }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.designerToEdtFormatTransformation, unit: TimeUnit.MINUTES) {
|
||||
designerToEdtFormatTransformation config
|
||||
}
|
||||
}
|
||||
@@ -142,7 +142,7 @@ void call() {
|
||||
label 'edt'
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.edtValidate, unit: TimeUnit.MINUTES) {
|
||||
edtValidate config
|
||||
}
|
||||
}
|
||||
@@ -153,7 +153,7 @@ void call() {
|
||||
label 'oscript'
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.resultTransformation, unit: TimeUnit.MINUTES) {
|
||||
transform config
|
||||
}
|
||||
}
|
||||
@@ -170,7 +170,7 @@ void call() {
|
||||
expression { config.stageFlags.bdd }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.bdd, unit: TimeUnit.MINUTES) {
|
||||
unzipInfobase()
|
||||
|
||||
bdd config
|
||||
@@ -187,7 +187,7 @@ void call() {
|
||||
expression { config.stageFlags.syntaxCheck }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.syntaxCheck, unit: TimeUnit.MINUTES) {
|
||||
syntaxCheck config
|
||||
}
|
||||
}
|
||||
@@ -202,7 +202,7 @@ void call() {
|
||||
expression { config.stageFlags.smoke }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.smoke, unit: TimeUnit.MINUTES) {
|
||||
unzipInfobase()
|
||||
|
||||
smoke config
|
||||
@@ -221,7 +221,7 @@ void call() {
|
||||
expression { config.stageFlags.sonarqube }
|
||||
}
|
||||
steps {
|
||||
timeout(time: config.stageTimeout, unit: TimeUnit.HOURS) {
|
||||
timeout(time: config.timeoutOptions.sonarqube, unit: TimeUnit.MINUTES) {
|
||||
sonarScanner config
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user