首页 > 解决方案 > 仅触发 Jenkinsfile 构建以更改某些路径

问题描述

我在同一个存储库中有一个用于多个多分支管道的 Jenkinsfile,我发现令人沮丧的一件事是,当我进行任何更改时,所有管道都会被触发,而实际上通常只需要触发一个管道。

是否可以使用 Jenkins 文件选择性地包含或排除将导致触发构建的路径?

我正在考虑类似于下面的内容,但是查看文档我看不到对这种简单方法的任何引用。但是,我是詹金斯的新手,所以我希望我遗漏了一些东西。

pipeline {
    agent {
        label 'Codebuild'
    }
    trigger {
        include '/some/path
    }
    stages {
        stage('Do the magic') {
            steps {
                script {
                    ...do stuff here...
                }
            }
        }       
    }
}

标签: jenkinsjenkins-pipeline

解决方案


您可以使用when condition来确定是否应根据给定条件执行阶段。
在此可以使用选项/条件changeset将阶段执行限制为仅在特定文件更改的情况下执行。

有关whenchangeset选项的更多信息:
https ://www.jenkins.io/doc/book/pipeline/syntax/#when

例子:

stages {
    stage('Do the magic') {
       // Below condition you can change based on your usecase
        when { changeset "src/*.js"}
        steps {
            sh "make build"
            ...

        }
    }
}

推荐阅读