我有许多用于几个不同平台的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]
我可以以某种方式覆盖帖子{}吗?
答案 0 :(得分:1)
共享库是一种解决方法,您非常接近。
@Library('my-shared-library')_
pipeline {
...
post {
always {
script {
myPost()
}
}
}
}