通过检查 Jenkinsfile 中的子字符串,有条件地运行 Jenkins 管道阶段



Jenkinsfile中应使用什么语法,以使阶段根据要签出的分支的名称是否包含特定子字符串有条件地运行?

例如,如果一个阶段可能仅在分支名称包含字符"底层分支"时才运行。 然后,该阶段将针对各种分支运行,例如:

bottom-level-branch-1  
bottom-level-branch-2  
bottom-level-branch-3  

另一个阶段仅在分支名称包含字符"中级分支"时才运行。 然后,此其他阶段将针对各种其他分支运行,例如:

middle-level-branch-1  
middle-level-branch-2  
middle-level-branch-3  

下面的示例过于严格,因为它对字符串相等性进行严格匹配,而不是检查子字符串:

    stage('Deploy Bottom Level Branch') {
        when {
            branch 'bottom-level-branch'
        }
        steps {
            sh './jenkins/scripts/some-script.sh'
        }
    }
    stage('Deploy Middle Level Branch') {
        when {
            branch 'middle-level-branch'
        }
        steps {
            sh './jenkins/scripts/some-script.sh'
        }
    } 

你可能可以做类似的事情(未尝试过(

when { 
    expression { 
        return env.BRANCH_NAME.contains('bottom-level-branch') 
    }
}

语法定义

您可以使用默认的模式匹配来指定分支名称。对于您提到的特定示例,您可以尝试这样的事情。

stage('Deploy Bottom Level Branch') {
    when {
        branch 'bottom-level-branch-*'
    }
    steps {
        sh './jenkins/scripts/some-script.sh'
    }
}

有关更多示例,您可以参考此处的文档: https://jenkins.io/doc/book/pipeline/syntax/#when

相关内容

  • 没有找到相关文章

最新更新