在 Jenkinsfile 中包含“post”块

问题描述 投票:0回答:1

我有两个 Jenkins 管道,它们有一个共同的

post
块:

first.Jenkinsfile
我有

pipeline {
  ...

  post {
    ...
  } // end post
} // end pipeline

并且在

second.Jenkinsfile
我有

pipeline {
  ...

  post {
    ...
  } // end post
} // end pipeline

我想做的是将公共

post
块提升到共享库中,并具有如下内容:

def common_post = load 'post.groovy'
pipeline {
  ...

  common_post()
} // end pipeline

但我不知道该怎么做。我已经阅读了 https://www.jenkins.io/doc/book/pipeline/shared-libraries/ 以及一堆推荐共享库的 stackoverflow 问题 - 但这不是我想要的。我只想注入一个“后”声明性块。我不知道怎么办!

jenkins jenkins-plugins jenkins-groovy
1个回答
0
投票

post
块是在声明式管道语法中定义的,您正在做的事情是脚本化管道的一部分。这两者可以以非常有限的方式混合:要么在共享库
call
方法中定义整个声明性管道,要么定义自定义步骤。
post
都不是。因此,不可能提升整个
post
块,但您可以提升其各个条件内的逻辑:

pipeline {
...
  post {
    always {
      script {
        common_post_always()
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.