自动化打包选择分支脚本

简介: 自动化打包选择分支脚本

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

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


image.png

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

目录
相关文章
|
30天前
|
jenkins 持续交付
Jenkins自动化部署脚本
Jenkins自动化部署脚本
30 0
|
1月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
46 1
|
2月前
|
Python
【速看】如何通过合理的封装,让你的自动化脚本更上一层楼!
【速看】如何通过合理的封装,让你的自动化脚本更上一层楼!
|
2月前
|
Shell 测试技术
Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?
Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?
|
3月前
|
监控 安全 Shell
Shell脚本实现企业电脑屏幕监控的自动化部署与维护
企业信息安全一直是重要的议题,而屏幕监控是一种有效的手段之一。本文将介绍如何使用Shell脚本实现企业电脑屏幕监控的自动化部署与维护,并在结尾部分说明如何将监控到的数据自动提交到指定网站。
213 1
|
3月前
|
Shell Linux
shell 脚本常用于自动化执行文件备份与压缩的任务
shell 脚本常用于自动化执行文件备份与压缩的任务
29 1
|
3月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
26 2
|
4天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
13 0
|
17天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
29天前
|
运维 监控 Linux
linux脚本自动化运维任务
Linux自动化运维通过脚本提升效率,涵盖服务管理(启停服务、异常恢复)、系统监控(资源警报)、日志管理(清理分析)、备份恢复、补丁更新、自动化部署(如Ansible)、网络管理、定时任务(cron)和故障排查。结合shell、Python及工具,形成高效运维体系。
23 3

热门文章

最新文章