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)