Продолжить выполнение последующих этапов после истечения времени ожидания данного этапа в конвейере Jenkins. - PullRequest
0 голосов
/ 16 марта 2020

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

pipeline {
    agent any
    stages {
            stage('Build-1') {
                options {
                    timeout(time: 1, unit: 'HOURS') 
                }
                steps {
                    echo 'Hello World 1'
                }
            }
            stage('Build-2') {
                steps {
                    echo 'Hello World 2'
                }
        }
    }
}

В приведенном выше примере после таймаута этапа Build-1 конвейер прерывается со следующим сообщением: Sending interrupt signal to process Cancelling nested steps due to timeout

Здесь этап Build-2 не выполняется. Есть ли способ, где, несмотря на время ожидания на этапе Build-1, конвейер может продолжить работу на этапе Build-2 изящно.

Я имею в виду следующую документацию: https://jenkins.io/doc/book/pipeline/syntax/#options

1 Ответ

1 голос
/ 16 марта 2020

Это может работать:

pipeline {
    agent any
    stages {
            stage('Build-1') {
                options {
                    timeout(time: 1, unit: 'HOURS') 
                }
                steps {
                    script {
                        try {
                             echo 'Hello World 1'
                        } catch (error) {
                             println "Error happened, continuing"
                        } 
                    }
                }
            }

Вы можете дополнительно проверить, произошло ли error по таймауту или по другой причине.

...