Jenkins 参数化选项指令中的重试次数
Jenkins parameterize number of retry attempts in options directive
是否可以在重试块中使用参数?我正在尝试通过创建一个 int 环境变量并将其传递给重试来参数化复制阶段将重试的次数,如下所示:retry(env.numberOfTryAttempts)
但是重试不起作用并且只运行一次作业在标记为失败之前。我在下面包含了管道。
pipeline {
agent any
parameters {
string(name: 'NUMBER_OF_TRY_ATTEMPTS', defaultValue: '3', trim: true)
}
stages {
stage('Initialize') {
steps {
script {
env.tryCount = 0
env.numberOfTryAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS)
}
}
}
stage('Replicate') {
options {
retry(env.numberOfTryAttempts)
}
steps {
script {
tryCount = env.tryCount as Integer
tryCount++
env.tryCount = "${tryCount}"
echo "Replicate try number: ${tryCount}"
error("Replicate Failed...")
}
}
}
}
post {
failure {
echo "Replicate Failed after ${tryCount} attempts"
}
success {
echo "Replicate Succeeded after ${tryCount} attempts"
}
}
}
如果将参数包装在函数调用中,则可以将函数传递给retry
。
例如,如果您定义
def maxAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS)
然后你可以重试调用函数
retry(maxAttempts)
是否可以在重试块中使用参数?我正在尝试通过创建一个 int 环境变量并将其传递给重试来参数化复制阶段将重试的次数,如下所示:retry(env.numberOfTryAttempts)
但是重试不起作用并且只运行一次作业在标记为失败之前。我在下面包含了管道。
pipeline {
agent any
parameters {
string(name: 'NUMBER_OF_TRY_ATTEMPTS', defaultValue: '3', trim: true)
}
stages {
stage('Initialize') {
steps {
script {
env.tryCount = 0
env.numberOfTryAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS)
}
}
}
stage('Replicate') {
options {
retry(env.numberOfTryAttempts)
}
steps {
script {
tryCount = env.tryCount as Integer
tryCount++
env.tryCount = "${tryCount}"
echo "Replicate try number: ${tryCount}"
error("Replicate Failed...")
}
}
}
}
post {
failure {
echo "Replicate Failed after ${tryCount} attempts"
}
success {
echo "Replicate Succeeded after ${tryCount} attempts"
}
}
}
如果将参数包装在函数调用中,则可以将函数传递给retry
。
例如,如果您定义
def maxAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS)
然后你可以重试调用函数
retry(maxAttempts)