我的詹金斯管道可以使用可重用的“ post”块吗?

时间:2018-07-24 22:10:18

标签: jenkins jenkins-plugins jenkins-pipeline

我有许多用于几个不同平台的jenkins管道,但是我对所有这些管道的“ post {}”块都差不多。由于我包含了成功,不稳定,失败和中止的信息,因此它的数量之多相当大。

有没有一种方法可以参数化我可以在所有管道中导入的可重用post {}块?我希望能够导入它并传递它的参数(因为它的几乎相同,但对于不同的管道,它们的差别很小)。

当前正在复制并粘贴到我所有管道{} s中的示例示例

post {
    success{
        script {
            // I'd like to be able to pass in values for param1 and param2
            someGroovyScript {
                param1 = 'blah1'
                param2 = 'blah2'
            }
            // maybe id want a conditional here that does something with a passed in param
            if (param3 == 'blah3') {
                echo 'doing something'
            }
        }
    }
    unstable{
        ... you get the idea
    }
    aborted{
        ... you get the idea
    }
    failure{
        ... you get the idea
    }
}

以下内容无效:

//在mypipeline.groovy

...
post {
    script {
        myPost{}
    }
}

//在vars / myPost.groovy

def call(body) {

    def config = [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = config
    body()

    return always {
        echo 'test'
    }
}

Invalid condition "myPost" - valid conditions are [always, changed, fixed, regression, aborted, success, unstable, failure, notBuilt, cleanup]

我可以以某种方式覆盖帖子{}吗?

1 个答案:

答案 0 :(得分:1)

共享库是一种解决方法,您非常接近。

@Library('my-shared-library')_
pipeline {
...
    post {
        always {
            script {
                myPost()
            }
        }
    }
}