jenkins 声明性Jenkin管道作业中每个阶段后的“Always”块

8tntrjer  于 2023-02-07  发布在  Jenkins
关注(0)|答案(2)|浏览(262)

我需要运行'总是'块,其中有一个脚本,在每一个阶段后。所以,我所做的如下所示。我的问题是,无论如何,我可以有'总是'块只一次,然后调用后,每个阶段,而不是提供整个'总是脚本'后,每个阶段?

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'
                    )
                }
            }
        }*

    }
}

}

h5qlskok

h5qlskok1#

如果你想以post脚本的形式运行,你必须在每一个阶段之后添加post块,但是在post块中你总是可以调用一个方法,从而节省一些代码重复。
另一种选择是直接调用post脚本方法(runPostScript())作为stage的最后一步,而不是添加post脚本。但警告是,它可能不会一直执行。如果stage中的某个部分失败,该方法将不会执行。

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'
}
u7up0aaq

u7up0aaq2#

对我来说,“全球”帖子部分行为不端:

pipeline {
    stages {
        stage('A') { echo 'A' }
        stage('B') { echo 'B' }
    }
    post { always { echo 'P' } }
}

在日志中,我可以看到:阿彼B彼
我希望:阿B普
文件不清楚...

相关问题