Bagaimana saya bisa mengetahui kesalahan saluran pipa di Jenkins?

Saya memiliki skrip pipa Jenkins yang sebagian besar berfungsi dengan baik dan saya mengelilingi sebagian besar hal yang akan menimbulkan kesalahan fatal dengan percobaan tangkapan. Namun dari waktu ke waktu hal-hal yang benar-benar tidak terduga terjadi dan saya ingin memiliki alat penampung yang aman untuk melakukan beberapa pelaporan akhir sebelum gagal dalam pembangunan.

Apakah tidak ada 'tahap' default akhir yang dapat saya tentukan yang berjalan setiap kali kesalahan tidak diketahui?


person S.Richmond    schedule 29.12.2016    source sumber
comment
Anda dapat membungkusnya dalam try {} finally {}   -  person Rik    schedule 03.01.2017


Jawaban (2)


Anda dapat melakukannya dengan menggabungkan semua tahapan pembangunan Anda dalam blok try/catch/finally {} besar, misalnya:

node('yournode') {
    try {
        stage('stage1') {
            // build steps here...
        }
        stage('stage2') {
            // ....
        }
    } catch (e) {
        // error handling, if needed
        // throw the exception to jenkins
        throw e
    } finally {
        // some common final reporting in all cases (success or failure)
    }
}
person Mohamed O. Abdallah    schedule 04.01.2017
comment
Akankah solusi ini berhasil untuk pendekatan deklaratif? - person Kanagavelu Sugumar; 21.11.2019
comment
@KanagaveluSugumar untuk saluran deklaratif, saya yakin jawaban ipper di bawah ini adalah solusi yang tepat - person Mohamed O. Abdallah; 26.11.2019

Meskipun sudah dijawab untuk pipeline bernaskah, saya ingin menunjukkan bahwa untuk pipeline deklaratif hal ini dilakukan dengan bagian postingan:

pipeline {
    agent any
    stages {
        stage('No-op') {
            steps {
                sh 'ls'
            }
        }
    }
    post {
        always {
            echo 'One way or another, I have finished'
            deleteDir() /* clean up our workspace */
        }
        success {
            echo 'I succeeeded!'
        }
        unstable {
            echo 'I am unstable :/'
        }
        failure {
            echo 'I failed :('
        }
        changed {
            echo 'Things were different before...'
        }
    }
}

Setiap tahap juga dapat memiliki bagiannya sendiri bila diperlukan.

person ipper    schedule 10.11.2017
comment
Apakah tahapan post dijalankan jika timeout terjadi? - person Siddharth; 31.03.2020