美文网首页
自动化打包选择分支脚本

自动化打包选择分支脚本

作者: anny_4243 | 来源:发表于2022-07-19 16:14 被阅读0次

    我们的项目是用uni-app开发的,有一个主分支,不同的项目经理可以在打包平台填写配置项,使用的是一套代码,根据不同的配置项自动化打包出符合他们要求的项目。随着开发的功能越来越多,有一些项目需要单独为他们开发一些定制化的功能。开发时会单独切出来一个分支,但是自动化打包用的是主分支,那么这些定制化的项目就只能手动打包,或者先把定制化的代码合到主分支再恢复,很麻烦。这时就需要实现自动化打包时选择分支的功能了,项目经理只需要在打包平台选择了对应项目的分支,就会自动打出相应的定制化功能的包。

    1.在打包平台新增选择打包分支的配置项


    2.获取配置项的接口里新增打包分支字段
    假设新增的打包分支字段名为packBranch,填写的分支名字为newItem,则接口返回的字段为packBranch:"newItem"

    3.修改打包脚本,主要修改下载配置项这一部分的shell脚本,这里为了查看方便我省略了其他的返回参数。
    修改之后的部分脚本:

    stage('下载配置项'){
                steps {
                    script{
                        echo  "获取配置项地址: ${params.CONFIG_BASE_URL}"
                        def config_base_url="${params.CONFIG_BASE_URL}"
                        //获取配置项
                        def system_config = sh returnStdout: true,script: /curl -m 20 -k --connect-timeout 10 "${config_base_url}"/
                        echo  "获取配置内容: ${system_config}"
                        //配置项转义
                        def res = getResult(system_config)
                        //环境变量存储
                        env.ENV_SYSTEM_CONFIG = system_config
                        env.PACK_BRANCH = "${res[0]}"
                        echo config_base_url
                        env.PACK_BRANCH
                        withEnv(["CONFIG_BASE_URL=${config_base_url}","ENV_SYSTEM_CONFIG=${env.ENV_SYSTEM_CONFIG}"]) {
                                 def branch = "${env.PACK_BRANCH}"
                                 echo "拉取${branch}上的代码"
                                 def rev="${params.GIT_COMMIT}"
                                 def scm = devgit(rev)
                                 env.GIT_COMMIT=scm.GIT_COMMIT
                                 echo "git cmt:${scm.GIT_COMMIT}"
                                 def msg = getChanges()
                                 echo "git log msg:${msg}"
             }
    
    //转对象 json字符串转对象
    def getResult(rawRest){
        def jsonSlpuer = new groovy.json.JsonSlurper()
        def obj= jsonSlpuer.parseText(rawRest)
        return ["${obj.data.packBranch}"]
    }
    
    //切分支 拉代码
    def devgit(rev){
        def branch = "${env.PACK_BRANCH}"
        def res =  checkout changelog: true, poll: true, scm: [$class: 'GitSCM', branches: [[name: "*/${branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'ChangelogToBranch', options: [compareRemote: "${rev}^{", compareTarget: '}']], [$class: 'CleanBeforeCheckout', deleteUntrackedNestedRepositories: true]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx', url: 'xxx']]]
        return res
    }
    

    4.在打包平台填写分支名字,保存之后自动化打包,打包成功之后就可以看到新打出的包用的是所填分支的代码。

    相关文章

      网友评论

          本文标题:自动化打包选择分支脚本

          本文链接:https://www.haomeiwen.com/subject/kiojirtx.html