Как я могу попробовать этот код в блоке try catch с groovy? - PullRequest
0 голосов
/ 05 июня 2019

Я определил способ попробовать загрузку Docker, если при загрузке образа в хранилище Docker возникла ошибка.код будет выполнен 3 раза, если не удастся нажать докер.так что я хочу, чтобы он выдавал исключение при сбое при нажатии кнопки Docker, если это не удалось после 3-й попытки повторного нажатия кнопки Docker.как я могу переписать этот код с помощью блока try catch.

def dockerPushAndRetry(String image) {

        echo "dockerPushAndRetry method start............"
        int count = 0;
        def status = sh(returnStatus: true, script: "${image}")
        while(count<=2 && status != 0) {
                sh "sleep 10"
                ++count;
                echo "Docker push retry attempt : $count" 
                def status1 = sh(returnStatus: true, script: "${image}")
                if (status1 == 0) {
                echo "Docker push retry attempt : $count is success" 
                break
                }    

        }
        echo "dockerPushAndRetry method ends............" 

}

return this

1 Ответ

1 голос
/ 05 июня 2019

без кода try-catch может быть проще:

def dockerPushAndRetry(String image) {
    for(int i=0;i<3;i++){
        if( 0==sh(returnStatus: true, script: "${image}") )return
        Thread.sleep(10000) // 10 sec
    }
    error "error to run ${image}, please read logs..."
}

, если вы хотите использовать try-catch ...

без returnStatus шага shвыдаст исключение , поэтому код может выглядеть следующим образом:

def dockerPushAndRetry(String image) {
    int count = 3
    for(int i=0;i<count;i++){
        try {
            sh(script: "${image}")
            return
        }catch(e){
            if(i==count-1)throw e
        }
        Thread.sleep(10000) // 10 sec
    }
}
...