Дженкинс параметризует количество повторных попыток в директиве параметров

Можно ли использовать параметр в блоке повтора? Я пытаюсь параметризовать количество повторных попыток на этапе репликации, создавая переменную env, которая является int, и передавая ее в повторную попытку следующим образом: . Я включил конвейер ниже.

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"
        }
    }
}
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
1
0
569
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы заключаете параметр в вызов функции, вы можете передать функцию retry. Например, если вы определяете def maxAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS) то вы можете сделать повторный вызов функции retry(maxAttempts)

получилось, поместив def maxAttempts = Integer.valueOf(NUMBER_OF_TRY_ATTEMPTS) над блоком конвейера {}, спасибо @Arlo!

Isaac Flaum 09.12.2020 18:34

Другие вопросы по теме