CN110795078B - 基于ios***下的app工程运作***的架构方法 - Google Patents
基于ios***下的app工程运作***的架构方法 Download PDFInfo
- Publication number
- CN110795078B CN110795078B CN201910928400.1A CN201910928400A CN110795078B CN 110795078 B CN110795078 B CN 110795078B CN 201910928400 A CN201910928400 A CN 201910928400A CN 110795078 B CN110795078 B CN 110795078B
- Authority
- CN
- China
- Prior art keywords
- source
- component
- app
- binary
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000010276 construction Methods 0.000 claims abstract description 40
- 238000004806 packaging method and process Methods 0.000 claims abstract description 28
- 230000010354 integration Effects 0.000 claims abstract description 22
- 238000007726 management method Methods 0.000 claims abstract description 20
- 238000001514 detection method Methods 0.000 claims abstract description 14
- 238000012360 testing method Methods 0.000 claims abstract description 14
- 238000012384 transportation and delivery Methods 0.000 claims abstract description 9
- 229910002056 binary alloy Inorganic materials 0.000 claims abstract 2
- 238000007689 inspection Methods 0.000 claims description 20
- 230000001419 dependent effect Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 7
- SDIXRDNYIMOKSG-UHFFFAOYSA-L disodium methyl arsenate Chemical compound [Na+].[Na+].C[As]([O-])([O-])=O SDIXRDNYIMOKSG-UHFFFAOYSA-L 0.000 claims description 4
- 238000002372 labelling Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 32
- 230000003068 static effect Effects 0.000 abstract description 8
- 238000004458 analytical method Methods 0.000 abstract description 7
- 238000012544 monitoring process Methods 0.000 abstract description 7
- 230000000712 assembly Effects 0.000 abstract 1
- 238000000429 assembly Methods 0.000 abstract 1
- 238000012423 maintenance Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机开发领域,公开了基于IOS***下的APP工程运作***的架构方法,包括:组件解耦;组件化平台自动发布组件,通过Jenkins来实行自动化操作;进行代码静态检测,组件ipa包大小检测和资源检测,二进制包构建;二进制仓库、私有源仓库的git操作;APP集成平台以配置表的形式集成组件到APP;打包平台进行APP的自动打包构建;打包成功后生成二维码,并安装部署给测试交付;还有对应的日志监控和分析、信息管理配置等***。本发明提供了集管理、迭代、输出、集成等线下开发功能到CI交付测试再到自动发布上线的闭环,形成一站式研发中台,简化了繁琐的开发流程,提高了开发效率,降低了开发成本。
Description
技术领域
本发明涉及计算机开发技术领域,尤其涉及一种基于IOS***下的APP工程运作***的架构方法。
背景技术
随着IOS项目开发的推进,新的业务不断引入,团队规模增加,这导致代码量越来越庞大,所有的代码集中在一个项目中,局部的代码变动往往导致需要整个项目的完整编译,代码提交冲突几率增大,相应的代码管控复杂,团队协作困难,模块之间代码耦合性也导致了测试效率低,不能对单个项目模块进行单独测试,代码质量难以检查检测,对应的项目编译时间也越来越长,导致编译速度慢,源码和二进制调试困难,构建打包速度慢。开发流程全部手动且非常繁琐复杂,项目的开发、发布、测试、上线成本不断增加,维护困难,因此急需要一种好的组件化平台管理方案和构建***方法来解决上述问题。
介于以上提出的所有的代码集中在一个项目中,局部的代码变动往往导致需要整个项目的完整编译,代码提交冲突几率增大的问题,申请公布号为CN107729061A的中国发明专利公开了一种IOS平台下工程项目的组件化构建方法,包括组件划分,构建路由中间件解耦组件,建立CocoaPods私有仓库,主工程使用组件,其中组件的划分包括基础组件、业务组件和路由中间件组件,业务组件依赖于基础组件,组件之间通过路由中间件组件进行相互通信调用。路由中间件组件通过Objective-C的Runtime机制实现,能够动态的检查和发现相应的组件。构建好的组件采用CocoaPods私有仓库的方式托管于bitbucket上面,最终主工程通过CocoaPods引入对应的组件。本方案实现了分模块解耦开发和测试,以解决现有技术中开发和测试的复杂性的问题。但是上述技术方案仅仅缓解了开发环节的问题,但是对于后期的组件发布、APP集成、APP构建打包、部署、交付测试、APP发布上线等仍然需要手动操作,无法全方位地解决开发周期长、开发效率低、开发流程繁琐、团队协作困难等的开发成本高的问题。
发明内容
本发明的目的在于提供一种基于IOS***下的APP工程运作***的架构方法,建立了一个具有标准化开发、接入维护流程和辅助工具,其实现了APP超大型工程从开发到自动化的组件发布、APP集成、APP构建打包、部署、交付测试,APP发布上线的整个构架,完成了全自动化的操作部署,实现了一键发布、一键集成、一键打包,以及持续反馈和持续迭代,简化了繁琐的开发流程,缩短了开发周期,提高了开发效率,降低了开发成本。
本发明提供的一种基于IOS***下的APP工程运作***的架构方法,包括以下步骤:
S1、组件解耦:建立CocoaPods私有仓库,将工程项目按组件分层划分;
S2、进入组件化平台,以进行以下步骤:
S201、开发人员操作Web平台填写相关参数,发布组件,以请求服务端接口;
S202、相关参数被发送至服务端;
S203、服务端请求Jenkins,并包装所有参数传递至Jenkins进行构建,以及进行编译检查及代码基本规范检查;
S204、当选择一键集成时,进入S3;
S205、当勾选一键打包时,进入S4;
S206、打包成功后生成二维码,并安装部署给测试交付;
S207、操作结果回调给服务端,平台展示和邮件反馈;
S3、APP集成平台以配置表的形式集成组件到APP;
S4、打包平台进行APP的自动打包构建。
通过采用上述技术方案,建立了具有标准化开发、接入维护流程和辅助工具,提供了集APP管理、迭代、输出、集成等线下开发功能到CI交付测试再到自动发布上线的闭环,形成一站式研发中台,缩短了开发周期,提高了开发效率,降低了开发成本。
在一些实施方式中,S203中Jenkins构建步骤包括 :
S2031、Jenkins首先clone gitlab建立的CocoaPods私有源仓库;
S2032、clone 二进制代码仓库;
S2033、根据平台填写的参数clone 对应tag 的源代码;
S2034、进入编译检查;
S2035、利用oclint和sonar进行代码基本规范检查;
S2036、对无用资源和不合法资源进行检查管控;
S2037、检测不合法依赖规则,对每个组件标注对应的环境值和级别值,检测spec文件里面所依赖的环境值和级别值是否有超出规定阀值的情况;
S2038、采用分布式***来构建任务job;
S2039、反馈结果,如果有检测不合格,则停止构建步骤,并通知开发人员修改不合法的代码;如果合法,则进行组件ipa包大小计算;
S2040、如果计算ipa包大小超过阈值参数,则反馈结果、停止构建步骤,并通知开发人员修改代码至ipa包大小小于阈值;
S2041、如果计算ipa包大小没有超过参数阈值,则进行二进制构建;
S2042、二进制构建后进行二进制仓库、私有源仓库的git操作。
在一些实施方式中,S2035进行代码基本规范检查的步骤包括:
a:编写检查脚本,在检查脚本中定义阈值和检测的规则;
b:经过检查脚本运行检测生成产物pmd,同时自动启动sonar,将产物pmd传入sonar;
c:进行sonar相关数据库的存储操作;
d:sonarqube平台展示。
在一些实施方式中,S2038分布式构建包括步骤:
A、调度***根据任务分配引擎分配一台空闲服务器进行编译检查和其他检测操作;
B、调度***根据任务分配引擎分配一台服务器进行构建计算ipa包大小操作;
C、调度***根据任务分配引擎分配一台服务器进行构建二进制操作;
D、如果A检测没有问题,则等待判断B是否超出阈值,如果没有则等待将C生成的二进制产物和B的产物回传至A的终端进行组装回调给服务端。
在一些实施方式中,S2039中进行组件ipa包大小计算的具体步骤包括:
A1、根据传入的参数修改私有源里面对应组件的spec;
A2、根据A1中spec生成新工程来编译计算机组件的ipa包大小;
A3、获取spec里面依赖项,根据依赖项组件生成新工程来编译计算依赖的ipa包大小;
A4、根据A2、A3的计算结果取得差值,即是此组件的ipa包大小;
A5、组件平台展示。
在一些实施方式中,S2041中二进制构建的方法包括:
B1、根据传入的参数,修改私有源中对应组件的spec文件;
B2、根据解析私有源spec文件里面的配置,copy相应的.h和资源文件到lib仓库对应的文件夹;
B3、根据解析私有源spec里面的配置,copy相应的.h和资源文件到lib仓库对应的文件夹。
在一些实施方式中,S2042中二进制仓库、私有源仓库的git操作包括:
C1、对lib仓库进行tag,commit,push的git操作;
C2、对私有源仓库进行tag,commit,push的git操作。
在一些实施方式中,S4包括:
S41:自由选择任意组件库的源码和二进制方式来动态化的构建打包;
S42:通过webhook、Jenkins部署实现APP的自动发布上线管理。
在一些实施方式中,S41包括实时源码的构建打包,具体包括:
S411:输入需要进行实时源码构建所需的组件和对应分支名称或者tag号;
S412:Jenkins相应的第四脚本则根据参数对主工程进行修改,然后编译构建打包。
在一些实施方式中,第四脚本的操作思路步骤为:
S4121:根据前端输入的参数首先修改配置表文件;
S4122:在podfile里面以git或者spec方式重新写入需要实时源码调试的组件;
S4123:进行pod update 从远端clone代码来编译构建代码。
综上所述,与现有技术相比,本发明提供的基于IOS***下的APP工程运作***的架构方法有益技术效果为:
1.建立了具有标准化开发、接入维护流程和辅助工具,提供了集管理、迭代、输出、集成等线下开发功能到CI交付测试再到自动发布上线的闭环,形成一站式研发中台,缩短了开发周期,提高了开发效率,降低了开发成本;
2.通过组件化平台实现了项目版本管理、项目多仓库管理、代码二进制化、组件化开发,组件维护,数据收集以及文档管理;
3.通过APP管理平台实现了多项目管理,同时优化APP集成策略,以配置表的形式集成组件到APP;
4.通过利用oclin和 sonar进行代码基本规范检查,包大小增量管控,无用资源和不合法资源的检查管控,不合法依赖的检测;
5.通过动态化的构建打包、webhook、Jenkins等部署实现APP的自动发布上线管。
附图说明
图1为本发明实施例中的工程项目组件划分示意图;
图2为本发明提供的基于IOS***下的APP工程运作***的架构方法中组件化平台的构建流程图;
图3为本发明提供的基于IOS***下的APP工程运作***的架构方法中进行Jenkins构建的流程图;
图4为本发明提供的基于IOS***下的APP工程运作***的架构方法中静代码质量检测的流程图;
图5为本发明提供的基于IOS***下的APP工程运作***的架构方法中分布式构建的流程图;
图6为本发明提供的基于IOS***下的APP工程运作***的架构方法中组件ipa包大小计算的流程图;
图7为本发明提供的基于IOS***下的APP工程运作***的架构方法中二进制构建的流程图;
图8为本发明提供的基于IOS***下的APP工程运作***的架构方法中APP自动化集成方法的流程图;
图9为本发明提供的基于IOS***下的APP工程运作***的架构方法中rubyGems插件的运行流程图;
图10为本发明提供的基于IOS***下的APP工程运作***的架构方法中从二进制切换源码的流程图;
图11为本发明提供的基于IOS***下的APP工程运作***的架构方法中从源码切换二进制的流程图;
图12为本发明提供的基于IOS***下的APP工程运作***的架构方法中二进制和本地路径源码切换的流程图;
图13为本发明提供的基于IOS***下的APP工程运作***的架构方法中APP打包发布上线流程图。
具体实施方式
以下结合附图及具体实施方式对本发明作进一步详细说明。
本发明披露了基于IOS***下的APP工程运作***的架构方法,其以CocoaPods组件管理的工程为基础,包括:
S1、组件解耦:建立CocoaPods私有仓库,即如图1所示,将工程项目按组件分层划分,包括项目组件层及基础组件层,项目组件层包括业务项目组件层、公共项目组件层,基础组件层包括工具组件层及基础SDK组件层。
S2、进入组件化平台,如图2所示,其包括以下步骤:
S201、开发人员操作Web平台填写相关参数,发布组件,以请求服务端接口;
S202、相关参数被发送至服务端;
S203、服务端请求Jenkins,并包装所有参数传递至Jenkins进行构建,以及进行编译检查及代码基本规范检查;
如图3所示,进行Jenkins构建的步骤包括 :
S2031、Jenkins首先clone gitlab建立的CocoaPods私有源仓库;
S2032、clone 二进制代码仓库;
S2033、根据平台填写的参数clone 对应tag 的源代码;
S2034、进入编译检查;
S2035、利用oclint和sonar进行代码基本规范检查(即静代码质量检查),如图4所示,其具体步骤包括:
a:编写检查脚本,在检查脚本中定义阈值和检测的规则;
b:经过检查脚本运行检测生成产物pmd,同时自动启动sonar,将产物pmd传入sonar;
c:进行sonar相关数据库的存储操作;
d:sonarqube平台展示;
S2036、对无用资源和不合法资源进行检查管控;
S2037、检测不合法依赖规则,对每个组件标注对应的环境值和级别值,检测spec文件里面所依赖的环境值和级别值是否有超出规定阀值的情况;
S2038、采用分布式***来构建任务job,如图5所示,具体包括:
A、调度***根据任务分配引擎分配一台空闲服务器进行编译检查和上述所有检测操作;
B、调度***根据任务分配引擎分配一台服务器进行构建计算ipa包大小操作;
C、调度***根据任务分配引擎分配一台服务器进行构建二进制操作;
D、如果A检测没有问题,则等待判断B是否超出阈值,如果没有则等待将C生成的二进制产物和B的产物回传至A的终端进行组装回调给服务端;
如果多个任务进来则根据分配引擎来分配排队进行构建;
S2039、反馈结果,如果有检测不合格,则停止构建步骤,并以邮件的形式通知开发人员修改不合法的代码,同时平台展示检测失败;如果合法,则进行接下来的组件ipa包大小计算,如图6所示,其具体步骤包括:
A1、根据传入的参数修改私有源里面对应组件的spec文件;
A2、根据A1中spec文件生成新工程来编译计算机组件的ipa包大小;
A3、获取spec文件里面依赖项,根据依赖项组件生成新工程来编译计算依赖的ipa包大小;
A4、根据A2、A3的计算结果取得差值,即是此组件的ipa包大小;
A5、组件平台展示;
S2040、如果此时计算ipa包大小超过阈值参数,则以邮件的形式反馈结果、停止构建步骤,并通知开发人员修改代码至ipa包大小小于阈值;
S2041、如果计算ipa包大小没有超过参数阈值,则进行二进制构建,如图7所示,具体步骤包括:
B1、根据传入的参数,修改私有源中对应组件的spec文件;
B2、编写第二脚本命令使用环境变量执行命令来生成二进制.a文件;
B3、根据解析私有源spec文件里面的配置,copy相应的.h和资源文件到lib仓库对应的文件夹;
S2042、二进制构建之后,接着进行相关二进制仓库、私有源仓库的git操作,其中具体步骤包括:
C1、对lib仓库进行tag,commit,push的git命令操作;
C2、对私有源仓库进行tag,commit,push的git命令操作;
S204、当选择一键集成时,进入S3的APP集成平台的操作;当不选择一键集成时,组件发布成功之后去APP集成平台手动选择组件集成到APP当中。
S205、当勾选一键打包时,进入S4的打包平台进行APP的自动打包构建;当不选择一键打包时,
S206、打包成功后生成二维码,并安装部署给测试交付;
S207、操作结果回调给服务端,平台展示和邮件反馈;
S208、邮件反馈,并显示发布成功,组件化平台同时提供组件git源码和二进制地址、组件描述、最新版本号、包大小、分类、操作人、责任人、发布状态及发布记录。
如图8所示,上述中S3的APP集成平台以配置表的形式集成组件到APP,其具体步骤包括:
S301、开发插件Ⅰ(即rubyGems插件),以替换工程podfile数据,从而更加方便的管理和组织数据;
具体的,如图9所示,rubyGems插件的运行流程包括:
S3011、将json格式的文件转化为hash对象;
S3012、循环遍历整个hash对象,
当遍历的时候出现key=podname时,标记第一临时变量podName="podname";
当遍历的时候出现value=tagname时,用前面标记的第一临时变量来组装第二临时变量:tagName="pod"+""+tagname+"";
S3013、组装S3012中的第一临时变量及第二临时变量,形成第三临时变量为name=tagName+","+podName;
S3014、将S3013组装的第三临时变量加入至数组变量allPodsNames中,形成新的数组变量;
S3015、循环遍历S3014中生成的新的数组变量,然后通过执行字符串命令;
S3016、当通过CocoaPods运行工程时,终端直接运行
pod update或pod install命令即可实现一键操作执行的目的。
S302、选择项目APP,podfile加载rubyGems插件来读取json配置表;
S303、选择项目APP,选择APP对应的不同分支,通过平台点击组件,进行组件相应版本号的修改,组件的新增,和组件的删除;
S304、将上面对组件进行的操作结果通过集成平台传输到服务端;
S305、服务端重新组装上面的操作结果,然后调起Jenkins,调度***根据任务分配引擎,将执行Jenkins服务的操作根据机器的空闲程度分派到不同机器,进行clone项目APP仓库;
S306、根据服务端传递过来的参数通第三脚本自动修改配置表:
S307、第三脚本对APP仓库的文件进行配置表文件的替换修改;
S308、第三脚本进行git自动化操作,包括ag,commit,push命令;
S309、当所有构建步骤完成之后,操作结果回调给服务端。
S310:服务端做完所有存数据等操作完成之后邮件反馈出来,最后平台状态显示发布成功。
除此之外,APP集成平台还能够实现源码和二级制的调试切换的一键操作,
如图10 所示,当二进制切换为源码时,其步骤包括:
S311、向CocoaPods组件管理的工程里面podfile文件中导入rubyGems插件;
S312、终端输入参数命令,一键操作执行,具体为:
S3121、在组件生成时候的私有源spec里面加入特定标识符_source的环境变量
$lib_source = ENV['use_source']
$lib_source_name = ENV["#{s.name}_source"]
if $lib_source || $lib_source_name
……
puts "XX源码调试"
else
……
end ;
S3122、在组件配置表json里面对需要从二进制切换到源码的组件加入特定标识符_source;
S3123、在进行pod update的时候根据组件中的特定标识符去加载组件专门的spec文件;
S3124、当加载组件配置json的过程中,首先rubyGems插件读取文件内容,获取有特定标识符_source的组件名XX;
S3125、根据S3124获取的组件名XX,rubyGems插件删除本地Pods目录里面对应组件的缓存文件;
S3126、根据S3124获取的组件名XX,rubyGems插件删除CocoaPods目录里面对应组件的缓存文件;
S3127、rubyGems插件首次判断一个.lock文件是否存在,如果不存在则创建一个.lcok文件记录存储获取的需要二进制切换成源码的组件库信息;如果存在,则直接在内记录存储获取的需要二进制切换成源码的组件库信息(多组件的情况类似);
S3128、rubyGems插件在解析数据时,对于S314获取的组件名XX,插件Ⅰ自动加入ENV[XX] = "1"模拟的环境变量;
S3129、终端输入命令pod update 的时候根据模拟的环境变量参数重新从服务器clone相应的源码文件。
如图11 所示,当源码切换为二进制时,其步骤包括:
S321、向CocoaPods组件管理的工程里面podfile文件中导入rubyGems插件;
S322、终端输入参数命令,一键操作执行,具体为:
S3221、在组件生成时候的私有源spec里面加入特定标识符_source的环境变量
$lib_source = ENV['use_source']
$lib_source_name = ENV["#{s.name}_source"]
if $lib_source || $lib_source_name
……
puts "XXX源码调试"
else
……
end;
S3222、在组件配置表json里面对需要从源码切换到二进制的组件删除特定标识符_source;
S3223、rubyGems插件在进行pod update的时候根据组件中的特定标识符去加载组件专门的spec文件;
S3224、rubyGems插件读取.lcok文件中源码切换成二进制的组件库信息并获取组件名XX(多组件的情况类似);
S3225、rubyGems插件根据S324中获取的组件名XX,删除本地Pods目录里面对应组件的缓存文件;
S3226、rubyGems插件根据S3224中获取的组件名XX,删除CocoaPods目录里面对应组件的缓存文件;
S3227、rubyGems插件删除.lcok文件中源码切换成二进制的组件库信息(多组件的情况类似);
S3228、rubyGems插件在解析数据时,对于S3224获取的组件名XX,rubyGems插件自动删除ENV[XX] = "1"模拟的环境变量;
S3229、终端输入命令pod update 的时候默认从远端clone相应的二进制文件。
当需要实现一键全部源码和二进制切换时候,只在在终端命令中加入在终端命令里面加入use_source=1参数。
如图12所示,当二进制和本地路径的path代码切换时:
S331、在工程下面的json配置文件中用本地源码路径文件代码地址替换,具体为:rubyGems插件解析json配置表拿到需要本地路径文件代码的组件名,然后rubyGems插件组装字符串
pod “XX”,path=>"/…/…/…/XX.podspec";
S332、终端输入命令pod update 的时候会重新从本地路径clone相应的组件库代码,实现一键操作执行切换。
如图13所示,上述中S4的打包平台进行APP的自动打包构建的操作步骤包括:
S41、自由选择任意组件库的源码和二进制方式来动态化的构建打包,具体包括:
S411、输入需要进行实时源码构建所需的组件和对应分支名称或者tag号;
S412、Jenkins根据相应的第四脚本则根据参数对主工程进行修改,然后编译构建打包,其中第四脚本的操作思路步骤为:
S4121、根据前端输入的参数首先修改配置表文件;
S4122、在podfile里面以git或者spec方式重新写入需要实时源码调试的组件;
S4123、进行pod update 从远端clone代码来编译构建代码;
S42、通过webhook、Jenkins部署实现APP的自动发布上线管理。
通过本发明提供的基于IOS***下的APP工程运作***的架构方法构建的架构还包括日志监控、分析***及信息管理配置等***,其功能包括:项目信息管理、配置静态检查项以及组件发版集成查询,异常流程监控分析,包体监控分析等。其中项目信息管理包括管理项目目的基本信息,如项目地址、项目负责人等,同时对各个项目的成员进行权限管理;配置静态检查项包括平台支持不同项目自定义不同的静态检查项,在平台上可以完成项目所需静态检查项的定制,如同时支持静态检查白名单的配置审核,依赖检测白名单配置;组件信息配置包括管理组件基本信息,包含组件来源、组件类型、组件描述、操作权限、包阈值;组件发版集成查询包括支持组件历史发布、组件包历史大小等记录查询,APP集成的数据记录查询等,方便问题的排查与追溯;流程时间分析,通过监控分析平台流程中每一步的执行时间,进行了针对性的优化以提高集成速度;异常流程监控分析包括对异常流程进行监控并且通知流程发起者,同时会对失败次数较多的Job分析原因。一部分***异常可以自动解决,而其它由于代码错误引起的异常会引导移动研发进行问题的排查与解决;包体监控分析包体总大小、可执行文件以及资源文件进行全方面的监控,包体变化的趋势一目了然,对于包体的异常变化可以第一时间感知,另外还有组件发布和APP集成成功率、组件发布次数、一件集成、打包次数等。
本具体实施方式的实施例均为本发明的较佳实施例,并非依此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。
Claims (10)
1.基于IOS***下的APP工程运作***的架构方法,其特征在于,包括以下步骤:
S1、组件解耦:建立CocoaPods私有仓库,将工程项目按组件分层划分;
S2、进入组件化平台,以进行以下步骤:
S201、开发人员操作Web平台填写相关参数,发布组件,以请求服务端接口;
S202、相关参数被发送至服务端;
S203、服务端请求Jenkins,并包装所有参数传递至Jenkins进行构建,以及进行编译检查及代码基本规范检查;
S204、当选择一键集成时,进入S3;
S205、当勾选一键打包时,进入S4;
S206、打包成功后生成二维码,并安装部署给测试交付;
S207、操作结果回调给服务端,平台展示和邮件反馈;
S3、APP集成平台以配置表的形式集成组件到APP,其中,APP集成平台实现源码和二级制的调试切换的一键操作,
当二进制切换为源码时,其步骤包括:
S311、向CocoaPods组件管理的工程里面podfile文件中导入rubyGems插件;
S312、终端输入参数命令,一键操作执行,具体为:
S3121、在组件生成时候的私有源spec里面加入特定标识符_source的环境变量 $libsource = ENV['use_source']
$lib source_name = ENV["#{s.name}_source"]
if $lib_source || $lib_source_name
……
puts "XX源码调试"
else
……
end ;
S3122、在组件配置表json里面对需要从二进制切换到源码的组件加入特定标识符_source;
S3123、在进行pod update的时候根据组件中的特定标识符去加载组件专门的spec文件;
S3124、当加载组件配置json的过程中,首先rubyGems插件读取文件内容,获取有特定标识符_source的组件名XX;
S3125、根据S3124获取的组件名XX,rubyGems插件删除本地Pods目录里面对应组件的缓存文件;
S3126、根据S3124获取的组件名XX,rubyGems插件删除CocoaPods目录里面对应组件的缓存文件;
S3127、rubyGems插件首次判断一个.lock文件是否存在,如果不存在则创建一个.lcok文件记录存储获取的需要二进制切换成源码的组件库信息;如果存在,则直接在内记录存储获取的需要二进制切换成源码的组件库信息(多组件的情况类似);
S3128、rubyGems插件在解析数据时,对于S314获取的组件名XX,插件Ⅰ自动加入ENV[XX] = "1"模拟的环境变量;
S3129、终端输入命令pod update 的时候根据模拟的环境变量参数重新从服务器clone相应的源码文件;
当源码切换为二进制时,其步骤包括:
S321、向CocoaPods组件管理的工程里面podfile文件中导入rubyGems插件;
S322、终端输入参数命令,一键操作执行,具体为:
S3221、在组件生成时候的私有源spec里面加入特定标识符_source的环境变量 $lib_source = ENV['use source']
$lib_source_name = ENV["#{s.name}_source"];
S4、打包平台进行APP的自动打包构建。
2.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S203中Jenkins构建步骤包括 :
S2031、Jenkins首先clone gitlab建立的CocoaPods私有源仓库;
S2032、clone 二进制代码仓库;
S2033、根据平台填写的参数clone 对应tag 的源代码;
S2034、进入编译检查;
S2035、利用oclint和sonar进行代码基本规范检查;
S2036、对无用资源和不合法资源进行检查管控;
S2037、检测不合法依赖规则,对每个组件标注对应的环境值和级别值,检测spec文件里面所依赖的环境值和级别值是否有超出规定阀值的情况;
S2038、采用分布式***来构建任务job;
S2039、反馈结果,如果有检测不合格,则停止构建步骤,并通知开发人员修改不合法的代码;如果合法,则进行组件ipa包大小计算;
S2040、如果计算ipa包大小超过阈值参数,则反馈结果、停止构建步骤,并通知开发人员修改代码至ipa包大小小于阈值;
S2041、如果计算ipa包大小没有超过参数阈值,则进行二进制构建;
S2042、二进制构建后进行二进制仓库、私有源仓库的git操作。
3.根据权利要求2所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S2035进行代码基本规范检查的步骤包括:
a:编写检查脚本,在检查脚本中定义阈值和检测的规则;
b:经过检查脚本运行检测生成产物pmd,同时自动启动sonar,将产物pmd传入sonar;
c:进行sonar相关数据库的存储操作;
d:sonarqube平台展示。
4.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S2038分布式构建包括步骤:
A、调度***根据任务分配引擎分配一台空闲服务器进行编译检查和其他检测操作;
B、调度***根据任务分配引擎分配一台服务器进行构建计算ipa包大小操作;
C、调度***根据任务分配引擎分配一台服务器进行构建二进制操作;
D、如果A检测没有问题,则等待判断B是否超出阈值,如果没有则等待将C生成的二进制产物和B的产物回传至A的终端进行组装回调给服务端。
5.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S2039中进行组件ipa包大小计算的具体步骤包括:
A1、根据传入的参数修改私有源里面对应组件的spec;
A2、根据A1中spec生成新工程来编译计算机组件的ipa包大小;
A3、获取spec里面依赖项,根据依赖项组件生成新工程来编译计算依赖的ipa包大小;
A4、根据A2、A3的计算结果取得差值,即是此组件的ipa包大小;
A5、组件平台展示。
6.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S2041中二进制构建的方法包括:
B1、根据传入的参数,修改私有源中对应组件的spec文件;
B2、根据解析私有源spec文件里面的配置,copy相应的.h和资源文件到lib仓库对应的文件夹;
B3、根据解析私有源spec里面的配置,copy相应的.h和资源文件到lib仓库对应的文件夹。
7.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S2042中二进制仓库、私有源仓库的git操作包括:
C1、对lib仓库进行tag,commit,push的git操作;
C2、对私有源仓库进行tag,commit,push的git操作。
8.根据权利要求1所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S4包括:
S41:自由选择任意组件库的源码和二进制方式来动态化的构建打包;
S42:通过webhook、Jenkins部署实现APP的自动发布上线管理。
9.根据权利要求8所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,S41包括实时源码的构建打包,具体包括:
S411:输入需要进行实时源码构建所需的组件和对应分支名称或者tag号;
S412:Jenkins相应的第四脚本则根据参数对主工程进行修改,然后编译构建打包。
10.根据权利要求8所述的基于IOS***下的APP工程运作***的架构方法,其特征在于,第四脚本的操作思路步骤为:
S4121:根据前端输入的参数首先修改配置表文件;
S4122:在podfile里面以git或者spec方式重新写入需要实时源码调试的组件;
S4123:进行pod update 从远端clone代码来编译构建代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910928400.1A CN110795078B (zh) | 2019-09-28 | 2019-09-28 | 基于ios***下的app工程运作***的架构方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910928400.1A CN110795078B (zh) | 2019-09-28 | 2019-09-28 | 基于ios***下的app工程运作***的架构方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795078A CN110795078A (zh) | 2020-02-14 |
CN110795078B true CN110795078B (zh) | 2023-11-21 |
Family
ID=69439979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910928400.1A Active CN110795078B (zh) | 2019-09-28 | 2019-09-28 | 基于ios***下的app工程运作***的架构方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795078B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360156B (zh) * | 2020-03-04 | 2023-11-14 | 武汉斗鱼鱼乐网络科技有限公司 | 一种ios编译方法及相关设备 |
CN113553030A (zh) * | 2020-04-26 | 2021-10-26 | 上汽通用汽车有限公司 | 基于Jenkins的嵌入式软件构建方法及其*** |
CN111767208B (zh) * | 2020-06-02 | 2023-09-19 | 北京金堤科技有限公司 | 一种自动测试方法及装置 |
CN112114864A (zh) * | 2020-08-17 | 2020-12-22 | 贝壳技术有限公司 | cocoapods代码拉取优化方法及*** |
CN112363754A (zh) * | 2020-11-17 | 2021-02-12 | 北京五八信息技术有限公司 | 一种iOS组件的管理方法、装置、电子设备及存储介质 |
CN112558981B (zh) * | 2020-12-23 | 2024-02-06 | 上海万向区块链股份公司 | 基于jenkinsfile的自定义编译部署方法及*** |
CN112685034A (zh) * | 2020-12-31 | 2021-04-20 | 新奥数能科技有限公司 | 用于开放平台的组件快速开发*** |
CN112882700B (zh) * | 2021-02-09 | 2024-04-23 | 京东方科技集团股份有限公司 | iOS应用程序构建方法及装置、电子设备及存储介质 |
CN113762932B (zh) * | 2021-09-14 | 2024-04-12 | 南京林洋电力科技有限公司 | 一种基于模糊算法的组态化app自动管理方法 |
CN113986396B (zh) * | 2021-11-10 | 2023-06-06 | 重庆紫光华山智安科技有限公司 | 一种基于分布式服务的集中配置方法、***、设备及介质 |
CN114153480A (zh) * | 2021-12-06 | 2022-03-08 | 北京金堤科技有限公司 | 代码同步、组件发布方法及其装置、计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140019228A1 (en) * | 2012-07-11 | 2014-01-16 | Char Software, Inc. d/b/a Localytics | System and Method for Performing Application-Level Analytics and Testing to Tailor Actions and Communications to a User's Experience |
CN106293743A (zh) * | 2016-08-11 | 2017-01-04 | 上海泛微网络科技股份有限公司 | 一种移动建模***及构建移动应用并实现跨平台发布的方法 |
CN106814701A (zh) * | 2016-12-26 | 2017-06-09 | 武汉华中数控股份有限公司 | 管控数控平台***及其构建方法 |
CN107632827A (zh) * | 2016-07-12 | 2018-01-26 | 阿里巴巴集团控股有限公司 | 应用的安装包的生成方法及装置 |
CN107729061A (zh) * | 2017-10-12 | 2018-02-23 | 武汉市灯塔互动文化传播有限公司 | 一种ios平台下工程项目的组件化构建方法 |
-
2019
- 2019-09-28 CN CN201910928400.1A patent/CN110795078B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140019228A1 (en) * | 2012-07-11 | 2014-01-16 | Char Software, Inc. d/b/a Localytics | System and Method for Performing Application-Level Analytics and Testing to Tailor Actions and Communications to a User's Experience |
CN107632827A (zh) * | 2016-07-12 | 2018-01-26 | 阿里巴巴集团控股有限公司 | 应用的安装包的生成方法及装置 |
CN106293743A (zh) * | 2016-08-11 | 2017-01-04 | 上海泛微网络科技股份有限公司 | 一种移动建模***及构建移动应用并实现跨平台发布的方法 |
CN106814701A (zh) * | 2016-12-26 | 2017-06-09 | 武汉华中数控股份有限公司 | 管控数控平台***及其构建方法 |
CN107729061A (zh) * | 2017-10-12 | 2018-02-23 | 武汉市灯塔互动文化传播有限公司 | 一种ios平台下工程项目的组件化构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110795078A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795078B (zh) | 基于ios***下的app工程运作***的架构方法 | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
US20180314622A1 (en) | System and method for implementing an api validator tool | |
CN102693183B (zh) | 一种实现软件自动化测试的方法及*** | |
CN111158674B (zh) | 组件管理方法、***、设备及存储介质 | |
CN108845940B (zh) | 一种企业级信息***自动化功能测试方法和*** | |
CN111309441A (zh) | 一种基于Jenkins实现DevOps的微服务部署方法 | |
CN108073400A (zh) | 软件自动化构建方法、服务器及存储介质 | |
EP2133795A1 (en) | System and method for testing a software product | |
CN105550001A (zh) | 分布式自动构建方法及*** | |
CN109977022B (zh) | 游戏资源的检查方法、装置、***及存储介质 | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN110162980B (zh) | 一种软件开发过程中一站式安全测试和管理的方法 | |
CN112965786A (zh) | 一种基于容器化的持续集成和持续交付方法及装置 | |
CN101432715B (zh) | 流程编码 | |
CN111324522A (zh) | 一种自动化测试***及方法 | |
CN113568839A (zh) | 软件测试和统计测试覆盖率的方法、装置、设备及介质 | |
CN111737140A (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
US10459698B2 (en) | Framework for generating adapters in an integrated development environment | |
CN110908708B (zh) | 一种代码发布方法、装置和*** | |
CN114090019A (zh) | 一种基于软件集成的代码构建、扫描及存储平台 | |
CN113051181A (zh) | 确定增量测试覆盖信息的方法、装置、设备和存储介质 | |
CN116400950A (zh) | 一种基于版本控制的DevOps元流水线*** | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN110543424B (zh) | 一种用于电子税务平台的测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |