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

代码解释:

  1. 环境变量打印: 使用 sh 命令打印 BRANCHGERRIT_BRANCH 环境变量的值,方便调试。
  2. 条件判断: 使用 Groovy 的 if-else if-else 语句根据 SCM_ADDRESS 的值进行条件判断。
  3. 代码下载:
    • 如果 SCM_ADDRESS 以 'http://' 开头,则使用 Jenkins 的 GitSCM 插件进行代码下载。
    • 如果 SCM_ADDRESS 以 'ssh://' 开头,则使用 sh 命令执行一系列 Git 命令进行代码下载。
  4. 错误处理: 如果 SCM_ADDRESS 的值不符合以上两种情况,则使用 error 语句抛出异常,提示参数值异常,并终止 Pipeline 的执行。

总结:

这段代码演示了如何在 Jenkins Pipeline 中使用 script 块和 Groovy 语法实现灵活的代码下载逻辑。通过条件判断和错误处理,可以提高 Pipeline 的健壮性和可维护性。

Jenkins Pipeline 中的条件判断与代码下载

原文地址: https://www.cveoy.top/t/topic/AXP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录