Jenkins Pipeline 中的条件判断与代码下载
Jenkins Pipeline 中的条件判断与代码下载
以下代码片段展示了如何在 Jenkins Pipeline 中使用 script 块和 Groovy 语法进行条件判断,并根据条件选择不同的代码下载方式。
steps {
// 打印环境变量
sh 'echo BRANCH=${BRANCH},GERRIT_BRANCH=${GERRIT_BRANCH},'
// 使用 script 块进行条件判断
script {
// 判断 SCM_ADDRESS 的值并选择不同的代码下载方式
if (env.SCM_ADDRESS =~ '^http://*') {
// 使用 GitSCM 插件进行代码下载
checkout([$class: 'GitSCM', branches: [[name: '${BRANCH}']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gerrit-code-clone', url: '${SCM_ADDRESS}']]])
} else if (env.SCM_ADDRESS =~ '^ssh://*') {
// 使用 SSH 方式进行代码下载
sh '''
git init; cat ~/.ssh/id_rsa.pub
git config remote.origin.url ${SCM_ADDRESS}
git fetch origin ${GERRIT_REFSPEC} && git checkout -f FETCH_HEAD || exit 11
if [ -n '${SUB_DIR}' -a '${RELEASE_VERSION}' == '0' ] && ! `git log --name-status --oneline HEAD -1 |grep -qa ${SUB_DIR}` ;then
echo '本次提交修改的内容不在当前子目录${SUB_DIR}下,与本任务无关,任务退出'
exit 11
fi
git rev-parse --verify HEAD && git reset --hard && git clean -fdx
'''
} else {
// SCM_ADDRESS 格式错误,抛出异常
error '参数值异常:SCM_ADDRESS=${SCM_ADDRESS}'
}
}
}
代码解释:
- 环境变量打印: 使用
sh命令打印BRANCH和GERRIT_BRANCH环境变量的值,方便调试。 - 条件判断: 使用 Groovy 的
if-else if-else语句根据SCM_ADDRESS的值进行条件判断。 - 代码下载:
- 如果
SCM_ADDRESS以 'http://' 开头,则使用 Jenkins 的GitSCM插件进行代码下载。 - 如果
SCM_ADDRESS以 'ssh://' 开头,则使用sh命令执行一系列 Git 命令进行代码下载。
- 如果
- 错误处理: 如果
SCM_ADDRESS的值不符合以上两种情况,则使用error语句抛出异常,提示参数值异常,并终止 Pipeline 的执行。
总结:
这段代码演示了如何在 Jenkins Pipeline 中使用 script 块和 Groovy 语法实现灵活的代码下载逻辑。通过条件判断和错误处理,可以提高 Pipeline 的健壮性和可维护性。
原文地址: https://www.cveoy.top/t/topic/AXP 著作权归作者所有。请勿转载和采集!