如果条件到Jenkinsfile中的文件夹分支

时间:2018-12-06 20:36:29

标签: if-statement groovy jenkins-pipeline git-branch

我在此文件夹下有一个分支文件夹“功能集”,其中有多分支

我需要在Jenkinsfile中运行以下脚本,并附带条件:如果此构建从“功能集”文件夹下的任何分支(如“功能集/”)运行,然后运行脚本

  

脚本是:

sh“”“

if [ ${env.BRANCH_NAME} = "feature-set*" ]
          then
                echo ${env.BRANCH_NAME}
                branchName='${env.BRANCH_NAME}' | cut -d'\\/' -f 2
                echo \$branchName
                npm install
                ng build --aot --output-hashing none --sourcemap=false                                                           
          fi

“”“

当前输出未满足以下条件:

  • [功能集/ swat5 =功能集*] 有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

这似乎更多是在外壳方面。由于您打算在条件允许的情况下使用shell,因此以下内容对我有用。

Administrator1 @ XXXXXXXX: $如果[[[$ {BRANCH_NAME} =功能集*]];然后回显“成功”;科幻 成功

删除引号,并分别在开头和结尾处添加一个额外的“ []”。

附加的“ []”用作正则表达式

答案 1 :(得分:0)

我将主要使用Jenkins / Groovy语法进行重写,并且仅在需要时才使用shell。

根据您提供的信息,我认为您的env.BRANCH_NAME总是看起来像`feature-set /

// Echo first so we can see value if condition fails
echo(env.BRANCH_NAME)
// startsWith better than contains() based on current usecase
if ( (env.BRANCH_NAME).startsWith('feature-set') ) {
    // Split branch string into list based on delimiter
    List<String> parts = (env.BRANCH_NAME).tokenize('/')
    /**
     * Grab everything minus the first part 
     * This handles branches that include additional '/' characters 
     * e.g. 'feature-set/feat/my-feat'
     */
    branchName = parts[1..-1].join('/')
    echo(branchName)
    sh('npm install && ng build --aot --output-hashing none --sourcemap=false')
}