如果条件为 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
"""
当前输出不满足条件:
- [feature-set/swat5 = 功能集*]
有帮助吗?
这似乎更偏向 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')
}
我有分支文件夹 "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
"""
当前输出不满足条件:
- [feature-set/swat5 = 功能集*] 有帮助吗?
这似乎更偏向 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')
}