在声明性詹金管道工作的每个阶段之后,“始终”阻塞

时间:2020-08-27 14:41:08

标签: jenkins pipeline

在每个阶段之后,我需要运行带有脚本的“ always”块。所以,我所做的如下所示。我的问题是,无论如何,我是否可以只阻塞一次“ always”,然后在每个阶段之后调用,而不是在每个阶段之后都提供整个“ always script”?

pipeline {
agent { label '!master' }

stages {
    stage("Checkout Test") {
        steps {
            'Do somthing'
        }
    }
    stage('Test1') {
        steps {
            dir('test') {
                'Do something'
            }
        }
    }
    post {
        *always {
            script {
                dir('test') {
                    Uploader(
                            'Do something'
                    )
                }
            }
        }*
    }

    stage('Test2') {
        steps {
            dir('test') {
                'Do something'
            }
        }
    }

    post {
        *always {
            script {
                dir('test') {
                    Uploader(
                            'Do something'
                    )
                }
            }
        }*

    }
}

}

1 个答案:

答案 0 :(得分:0)

如果要作为发布脚本运行,则必须在每个阶段之后添加发布块。但是在此期间,您始终可以调用方法,从而节省一些代码重复。

另一个选择是直接在阶段的最后一步调用后脚本方法(runPostScript()),而不是添加后脚本。但是需要注意的是,它可能不会一直执行。如果阶段中的某些操作失败,则该方法将不会执行。

        pipeline {
    agent { label '!master' }
    
    stages {
        stage("Checkout Test") {
            steps {
                'Do somthing'
            }
        }
        stage('Test1') {
            steps {
                dir('test') {
                    'Do something'
                }
            }
        }
        post {
            *always {
                script {
                    runPostScript()
                }
            }*
        }
    
        stage('Test2') {
            steps {
                dir('test') {
                    'Do something'
                }
            }
        }
    
        post {
            *always {
                script {
                    runPostScript()
                }
            }*
    
        }
    }
    }

def runPostScript(){
           'do something'
}
相关问题