相关疑难解决方法(0)

Jenkins + Git:仅当 PR 在子目录中引入更改时才构建

我们有一个大型的 monorepo,里面有多个项目(A 和 B)。我目前将 Jenkins 设置为一个 Multibranch Pipelines 项目,该项目监视 PR 的 monorepo。如果创建了 PR,Jenkins 会同时构建 A 和 B。

现在,我希望 Jenkins 更聪明,并且只在 PR 中的任何更改引入A/目录更改时才构建项目 A。事实证明这是非常困难的。

when { changeset "A/" }似乎只检查最后提交的修改的文件A/,而不是如果PR在修改的文件A/

所以我使用https://issues.jenkins-ci.org/browse/JENKINS-54285让它变得更聪明,并做了:

when { expression { return sourceChanged("A/") } }

sourceChanged定义为:

def boolean sourceChanged(String module) {
    if (env.CHANGE_TARGET == null)
        return true;

    def MASTER = sh(returnStdout: true, script: "git rev-parse origin/${env.CHANGE_TARGET}").trim()
    def HEAD = sh(returnStdout: true, script: "git …
Run Code Online (Sandbox Code Playgroud)

git jenkins jenkins-pipeline multibranch-pipeline

7
推荐指数
1
解决办法
1844
查看次数