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

if condition to folder branch in Jenkinsfile

我有分支文件夹 "feature-set" 这个文件夹下有 multibranch

我需要 运行 我的 Jenkinsfile 中的以下脚本,条件是如果此构建 运行s 来自 "feature-set" 文件夹下的任何分支,例如 "feature-set/" 然后 运行 脚本

the script is:

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

"""

当前输出不满足条件:

这似乎更偏向 shell 一方。由于您打算使用 shell 如果以下条件对我有用。

管理员 1@XXXXXXXX: $ if [[ ${BRANCH_NAME} = 功能集* ]];然后 echo "Success";菲 成功

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

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

我会重写它主要是 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')
}