首页 > 解决方案 > 当特定文件夹中的文件发生更改时触发多分支管道

问题描述

当文件夹中的某些文件被推送到 BitBucket 时,我想运行多分支管道。我尝试过轮询忽略对某些路径的提交。但管道没有触发。任何人都可以帮助解决问题。如何在包含的轮询区域内准确指定路径会忽略对某些路径的提交。

标签: jenkinstriggersjenkins-pipelinepipelinepolling

解决方案


我在包含andJenkinsfile的 Git 存储库中使用了以下内容:1.txt2.txt

pipeline {
    agent any

    stages {
        
        stage('1.txt in changelog') {
            when {
                // see https://www.jenkins.io/doc/book/pipeline/syntax/#built-in-conditions
                changelog '1.txt'
            }
            steps {
                echo '1.txt in changelog'
            }
        }
 
        stage('2.txt in changelog') {
            when {
                changelog '2.txt'
            }
            steps {
                echo '2.txt in changelog'
            }
        }
        
        stage('1.txt in changeset') {
            when {
                changeset '1.txt'
            }
            steps {
                echo '1.txt in changeset'
            }
        }
 
        stage('2.txt in changeset') {
            when {
                changeset '2.txt'
            }
            steps {
                echo '2.txt in changeset'
            }
        }
        
    }
}

更改并推送2.txt相应多分支管道项目的控制台输出后显示:

...
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (1.txt in changelog)
Stage "1.txt in changelog" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (2.txt in changelog)
[Pipeline] echo
2.txt in changelog
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (1.txt in changeset)
Stage "1.txt in changeset" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (2.txt in changeset)
[Pipeline] echo
2.txt in changeset
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

这同样适用于创建2.txt不适用于删除它。


推荐阅读