0

应该在 a 中使用什么语法来Jenkinsfile根据被检出的分支的名称是否包含特定的子字符串来有条件地运行阶段?

例如,如果一个阶段可能仅在分支名称包含字符“bottom-level-branch”时运行。然后,该阶段将针对各种分支运行,例如:

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'
        }
    } 
4

2 回答 2

0

您可能可以做类似(未尝试)的事情

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

语法定义

于 2018-04-20T22:32:32.953 回答
0

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

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

于 2018-04-21T09:35:09.310 回答