CN107632829A - 一种基于iOS***下的App自动化持续集成***及方法 - Google Patents
一种基于iOS***下的App自动化持续集成***及方法 Download PDFInfo
- Publication number
- CN107632829A CN107632829A CN201710657531.1A CN201710657531A CN107632829A CN 107632829 A CN107632829 A CN 107632829A CN 201710657531 A CN201710657531 A CN 201710657531A CN 107632829 A CN107632829 A CN 107632829A
- Authority
- CN
- China
- Prior art keywords
- app
- server
- certificate
- test
- git
- 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.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于iOS***下的App自动化持续集成***及方法,包括MAC客户端、证书模块、组件模块、Git模块、编译模块、资源分发模块和测试模块,通过Mac客户端上传所需证书、组件与组件版本、传源代码;从Mac客户端向编译服务器发起编译指令,编译服务器从Git服务器下载所需源代码并解析lock文件,下载所需证书、组件,编译成ipa程序包后执行打包并上传至分发服务器;分发服务器通过Mac客户端的指令执行分发App至测试服务器,和/或根据App的用途不同上传AppStore和/或下载;测试服务器向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。本发明可以以天为单位的持续集成APP,可以很快发现编译问题,从而缩减开发周期,快速迭代版本。
Description
技术领域
本发明涉及APP开发、集成、维护、升级技术领域,特别是一种基于iOS***下的App自动化持续集成***及方法。
背景技术
众所周知,现在APP的竞争已经到了用户体验为王,质量为上的白热化阶段,用户们都是很挑剔的。如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一批的用户在使用中纷纷出现闪退bug,轻则,很可能前期推广砸的钱都白费了,重则,口碑不好,未来也提升不起用户量来了。这就需要APP不断更新迭代版本,然而APP的每个版本开始都会估算好开发周期,但是总会因为各种事情而延期。这其中包括了一些客观因素。由于产品线增多,迭代速度越来越快,给测试带来的压力也越来越大。如果测试都在开发完全开发完成之后再来测试,那就会影响很长一段时间,这时候由于集成晚就会严重拖慢项目节奏;另外,APP的打包对于开发人员来说是一件很耗时,而且没有很大技术含量的工作。如果开发人员一多,相互改的代码冲突的几率就越大,加上没有产线管理机制,代码仓库的代码质量很难保证,这就需要花一些时间来解决冲突,解决完了冲突还需要自己手动打包,这个时候如果证书又不对,又要耽误好长时间。
为了保证App的持续开发与维护,我们需要很多独立的服务,特别是对iOS开发中复杂的bundle ID、证书文件、Provisioning Profiles、推送证书复杂关系的维护,开发组件的版本维护,源码维护,源码与稳定组件的关联方式,这些都需要独立的服务器去管理。当所有的App资源都准备好后,我们需要编译服务器去编译出我们需要的ipa文件,并发分到测试服务器或者交互到客户或者上传AppStore,这些就需要用到我们的编译服务和自动化测试服务。
因此,亟待开发一种基于iOS***下的App自动化持续集成***及方法。
发明内容
本发明的目的是要解决现有技术问题的不足,提供一种基于iOS***下的App自动化持续集成***及方法。
为达到上述目的,本发明是按照以下技术方案实施的:
一种基于iOS***下的App自动化持续集成***,包括MAC客户端、证书模块、组件模块、Git模块、编译模块、资源分发模块和测试模块,其中:
Mac客户端,用于上传和下载证书、组件、源代码,上传测试用例以及发起编译指令;
证书模块,包括证书资源服务器,用于管理Mac客户端上传的证书,并提供给编译模块进行编译;
组件模块,包括组件服务器,用于管理Mac客户端上传的组件和版本,并提供给编译模块进行编译;
Git模块,包括Git服务器,用于管理Mac客户端上传的源代码,并提供给编译模块进行编译;
编译模块,包括编译服务器,用于将源代码、组件、证书进行编译,并执行打包成ipa程序包并上传至资源分发模块;
资源分发模块,包括分发服务器,用于通过Mac客户端的指令执行分发App至测试模块,和/或根据App的用途不同上传AppStore和/或下载;
测试模块,包括测试服务器,用于向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
其中,所述源代码包括引用组件的lock文件,Mac客户端和编译服务器通过lock文件去下载所需的组件。
基于上述一种基于iOS***下的App自动化持续集成***,本发明还提供了一种基于iOS***下的App自动化持续集成方法,具体步骤如下:
S1、通过Mac客户端上传所需证书文件到证书资源服务器,上传所需组件与组件版本到组件服务器,再上传源代码到Git服务器,源代码用Git服务器进行管理,并嵌入lock文件;
S2、从Mac客户端向编译服务器发起编译指令,编译服务器从Git服务器下载所需源代码并解析lock文件,从组件服务器获取组件整合进源代码,再从证书资源服务器下载所需证书,编译服务器根据证书的分发用途编译不同的ipa程序包后执行打包并上传至分发服务器;
S3、分发服务器通过Mac客户端的指令执行分发App至测试服务器,和/或根据App的用途不同上传AppStore和/或下载;
S4、测试服务器向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
其中,所述步骤S1中Git服务器主要使用Git进行版本管理,Mac客户端通过gitpush命令上传源代码,Mac客户端通过git pull命令拉取源代码。
其中,所述步骤S2中从Mac客户端向编译服务器发起编译指令还包括定时任务编译指令。
其中,所述步骤S2中编译服务器通过checkout命令从Git服务器获取源代码,再在git服务器中设置tag,获取不同版本的源代码。
其中,所述步骤S3中下载包括从分发服务器直接通过网站下载,以及使用iOS手机客户端从分发服务器扫码下载。
与现有技术相比,本发明可以以天为单位的持续集成APP,可以很快发现编译问题,自动打包直接无法通过,打完包以后,测试扫码无法安装,这种问题也会立即被暴露出来,接口问题和性能问题就有自动化测试脚本来发现。这些低级问题由持续集成来暴露展现出来,提醒我们避免低级错误,从而缩减开发周期,快速迭代版本。
附图说明
图1为本发明的***结构图。
图2为本发明的证书的种类与用途框图。
图3为本发明的组件模块与lock文件框图。
图4为本发明的自动化持续集成的编译流程图。
图5为本发明的App分发示意图。
具体实施方式
下面结合附图及其具体实施例对本发明作进一步描述,在此发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
如图1所示,本实施例的一种基于iOS***下的App自动化持续集成***,包括MAC客户端、证书模块、组件模块、Git模块、编译模块、资源分发模块和测试模块,其中:
Mac客户端,用于上传和下载证书、组件、源代码,上传测试用例以及发起编译指令;
证书模块,包括证书资源服务器,用于管理Mac客户端上传的证书,并提供给编译模块进行编译;
组件模块,包括组件服务器,用于管理Mac客户端上传的组件和版本,并提供给编译模块进行编译;
Git模块,包括Git服务器,用于管理Mac客户端上传的源代码,并提供给编译模块进行编译;
编译模块,包括编译服务器,用于将源代码、组件、证书进行编译,并执行打包成ipa程序包并上传至资源分发模块;
资源分发模块,包括分发服务器,用于通过Mac客户端的指令执行分发App至测试模块,和/或根据App的用途不同上传AppStore和/或下载;
测试模块,包括测试服务器,用于向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
其中,所述源代码包括引用组件的lock文件,Mac客户端和编译服务器通过lock文件去下载所需的组件。
本发明的一种基于iOS***下的App自动化持续集成方法,具体步骤如下:
S1、通过Mac客户端上传所需证书文件到证书资源服务器,上传所需组件与组件版本到组件服务器,再上传源代码到Git服务器,源代码用Git服务器进行管理,并嵌入lock文件;如图2所示,在iOS***开发中每个App都需要Provisioning Profiles文件、p12证书文件、推送p12证书文件、还有bundle ID,这四个缺一不可,每个App都不同,根据用途不同证书分为四种,Enterprice Deployment是企业级分发,任何人可以下载使用,脱离AppStore;Development Deployment主要用在苹果的开发环境测试使用;Ad Hoc Deployment主要用在苹果的正式环境测试使用;iOS App Store Deploment上线AppStore,用户可以针对不同的用户上传不同的证书类型,在一个App下,可以根据编译指令的不同,分发不同用途的App;App开发中会用到很多组件;另外,如图3所示,每次引用组件的时候Xcode都要做很多配置工作,当组件升级的时候,配置可能还要修改,很容易改错,还可能造成很多不兼容问题,组件模块统一管理组件,每上传一个组件标明版本号和Xcode配置文件,lock文件描述引用的组件和组件版本,当Mac客户端和编译服务器编译代码时去组件服务器获取相应的组件进行编译;Git模块主要使用Git进行版本管理,MAC客户端通过git push 命令上传源代码,git pull命令拉取代码,编译服务器通过git checkout命令获取源代码,我们可以再Git服务器中设置tag,这样就可以获取不同版本的源代码;
S2、从Mac客户端向编译服务器发起编译指令,包括git仓库地址、所需证书文件、分发用途、定时任务,编译服务器从Git服务器checkout源代码,解析lock文件,从组件服务器获取组件整合进源代码,再从证书资源服务器下载所需证书,编译服务器根据证书的分发用途编译不同的ipa程序包后通过xcodebuild命令执行打包并上传至分发服务器;
S3、分发服务器通过Mac客户端的指令执行分发App至测试服务器,和/或根据App的用途不同上传AppStore和/或下载,下载包括从分发服务器直接通过网站下载,以及使用iOS手机客户端从分发服务器扫码下载,具体参照图5;
S4、测试服务器向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
如图4所示为本发明的自动化持续集成的编译流程图,以下作详细叙述:
编译服务器从Git服务器checkout源代码,如果编译服务器发现源代码有错误则编译结束,如果编译服务器发现源代码正确则解析lock文件,编译服务器此时需要向组件服务器请求lock文件相应的组件,如果组件有错误则编译结束,组件正确则继续向证书资源服务器请求获取证书,如果证书有错误则编译结束,证书正确则开始编译,编译服务器过程中出现错误则编译结束,若果无错误编译服务器根据分发用途编译不同的ipa程序包,如果ipa程序包有问题则结束编译,ipa程序包无错误则上传ipa程序包至分发服务器,分发服务器将ipa程序包上传至 App Store,上传成功后则结束得到APP,若果上传失败,则通过测试服务器向iOS手机客户端和/或者iOS模拟器发送执行测试用例,iOS手机客户端和/或者iOS模拟器执行测试用例,若测试APP没有问题则结束得到APP,若测试发现问题则生成测试报告,下载测试报告反馈给开发人员,整个***可以分为编译前的准备工作和编译后的测试、部署,当收到测试反馈后又开始新一轮的工作。
本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
Claims (7)
1.一种基于iOS***下的App自动化持续集成***,其特征在于,包括MAC客户端、证书模块、组件模块、Git模块、编译模块、资源分发模块和测试模块,其中:
Mac客户端,用于上传和下载证书、组件、源代码,上传测试用例以及发起编译指令;
证书模块,包括证书资源服务器,用于管理Mac客户端上传的证书,并提供给编译模块进行编译;
组件模块,包括组件服务器,用于管理Mac客户端上传的组件和版本,并提供给编译模块进行编译;
Git模块,包括Git服务器,用于管理Mac客户端上传的源代码,并提供给编译模块进行编译;
编译模块,包括编译服务器,用于将源代码、组件、证书进行编译,并执行打包成ipa程序包并上传至资源分发模块;
资源分发模块,包括分发服务器,用于通过Mac客户端的指令执行分发App至测试模块,和/或根据App的用途不同上传AppStore和/或下载;
测试模块,包括测试服务器,用于向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
2.根据权利要求1所述的基于iOS***下的App自动化持续集成***,其特征在于:所述源代码包括引用组件的lock文件,Mac客户端和编译服务器通过lock文件去下载所需的组件。
3.一种如权利要求1所述的基于iOS***下的App自动化持续集成方法,其特征在于,包括以下步骤:
S1、通过Mac客户端上传所需证书文件到证书资源服务器,上传所需组件与组件版本到组件服务器,再上传源代码到Git服务器,源代码用Git服务器进行管理,并嵌入lock文件;
S2、从Mac客户端向编译服务器发起编译指令,编译服务器从Git服务器下载所需源代码并解析lock文件,从组件服务器获取组件整合进源代码,再从证书资源服务器下载所需证书,编译服务器根据证书的分发用途编译不同的ipa程序包后执行打包并上传至分发服务器;
S3、分发服务器通过Mac客户端的指令执行分发App至测试服务器,和/或根据App的用途不同上传AppStore和/或下载;
S4、测试服务器向iOS手机客户端和/或iOS模拟器发送执行测试用例,并生成测试报告反馈给开发人员。
4.根据权利要求3所述的基于iOS***下的App自动化持续集成方法,其特征在于:所述步骤S1中Git服务器主要使用Git进行版本管理,Mac客户端通过git push命令上传源代码,Mac客户端通过git pull命令拉取源代码。
5.根据权利要求3所述的基于iOS***下的App自动化持续集成方法,其特征在于:所述步骤S2中从Mac客户端向编译服务器发起编译指令还包括定时任务编译指令。
6.根据权利要求3所述的基于iOS***下的App自动化持续集成方法,其特征在于:所述步骤S2中编译服务器通过checkout命令从Git服务器获取源代码,再在git服务器中设置tag,获取不同版本的源代码。
7.根据权利要求3所述的基于iOS***下的App自动化持续集成方法,其特征在于:所述步骤S3中下载包括从分发服务器直接通过网站下载,以及使用iOS手机客户端从分发服务器扫码下载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657531.1A CN107632829A (zh) | 2017-08-03 | 2017-08-03 | 一种基于iOS***下的App自动化持续集成***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657531.1A CN107632829A (zh) | 2017-08-03 | 2017-08-03 | 一种基于iOS***下的App自动化持续集成***及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107632829A true CN107632829A (zh) | 2018-01-26 |
Family
ID=61099527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710657531.1A Pending CN107632829A (zh) | 2017-08-03 | 2017-08-03 | 一种基于iOS***下的App自动化持续集成***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107632829A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491210A (zh) * | 2018-03-27 | 2018-09-04 | 无锡华云数据技术服务有限公司 | 代码持续集成方法、装置、***及服务器 |
CN109101244A (zh) * | 2018-07-20 | 2018-12-28 | 珠海宏桥高科技有限公司 | 一种ios***一体化自动打包方法 |
CN109213686A (zh) * | 2018-10-22 | 2019-01-15 | 网易(杭州)网络有限公司 | 应用包体检查方法、装置、存储介质、处理器及服务器 |
CN109460360A (zh) * | 2018-10-29 | 2019-03-12 | 北京云测信息技术有限公司 | 一种增强ios自动化测试输入稳定性和兼容性的方法 |
CN109889579A (zh) * | 2019-01-24 | 2019-06-14 | 江苏中云科技有限公司 | 云计算环境下的通用升级*** |
WO2019169726A1 (zh) * | 2018-03-08 | 2019-09-12 | 平安科技(深圳)有限公司 | 应用打包上传方法、装置、计算机设备及存储介质 |
CN111209205A (zh) * | 2020-01-08 | 2020-05-29 | 北京字节跳动网络技术有限公司 | 配置方法、装置和电子设备 |
CN111767208A (zh) * | 2020-06-02 | 2020-10-13 | 北京金堤科技有限公司 | 一种自动测试方法及装置 |
CN112256319A (zh) * | 2020-10-27 | 2021-01-22 | 厦门吉比特网络技术股份有限公司 | 基于安全环境下的iOS安装包版本管理***及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336688A (zh) * | 2013-06-20 | 2013-10-02 | 中标软件有限公司 | 面向云计算软件研发过程中的软件集成方法及*** |
CN103838584A (zh) * | 2014-03-26 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种移动终端应用的开发方法及装置 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
CN106293742A (zh) * | 2016-08-11 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于定时构建的自动化***集成方法 |
US20180321926A1 (en) * | 2017-05-05 | 2018-11-08 | Servicenow, Inc. | Service release tool |
-
2017
- 2017-08-03 CN CN201710657531.1A patent/CN107632829A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336688A (zh) * | 2013-06-20 | 2013-10-02 | 中标软件有限公司 | 面向云计算软件研发过程中的软件集成方法及*** |
CN103838584A (zh) * | 2014-03-26 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种移动终端应用的开发方法及装置 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
CN106293742A (zh) * | 2016-08-11 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于定时构建的自动化***集成方法 |
US20180321926A1 (en) * | 2017-05-05 | 2018-11-08 | Servicenow, Inc. | Service release tool |
Non-Patent Citations (1)
Title |
---|
佚名: "手把手教你利用Jenkins持续集成iOS项目", 《HTTP://WWW.COCOACHINA.COM/ARTICLES/17281》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019169726A1 (zh) * | 2018-03-08 | 2019-09-12 | 平安科技(深圳)有限公司 | 应用打包上传方法、装置、计算机设备及存储介质 |
CN108491210A (zh) * | 2018-03-27 | 2018-09-04 | 无锡华云数据技术服务有限公司 | 代码持续集成方法、装置、***及服务器 |
CN109101244A (zh) * | 2018-07-20 | 2018-12-28 | 珠海宏桥高科技有限公司 | 一种ios***一体化自动打包方法 |
CN109213686A (zh) * | 2018-10-22 | 2019-01-15 | 网易(杭州)网络有限公司 | 应用包体检查方法、装置、存储介质、处理器及服务器 |
CN109213686B (zh) * | 2018-10-22 | 2022-03-22 | 网易(杭州)网络有限公司 | 应用包体检查方法、装置、存储介质、处理器及服务器 |
CN109460360A (zh) * | 2018-10-29 | 2019-03-12 | 北京云测信息技术有限公司 | 一种增强ios自动化测试输入稳定性和兼容性的方法 |
CN109460360B (zh) * | 2018-10-29 | 2021-10-15 | 北京云测信息技术有限公司 | 一种增强ios自动化测试输入稳定性和兼容性的方法 |
CN109889579B (zh) * | 2019-01-24 | 2021-01-26 | 江苏中云科技有限公司 | 云计算环境下的通用升级*** |
CN109889579A (zh) * | 2019-01-24 | 2019-06-14 | 江苏中云科技有限公司 | 云计算环境下的通用升级*** |
CN111209205A (zh) * | 2020-01-08 | 2020-05-29 | 北京字节跳动网络技术有限公司 | 配置方法、装置和电子设备 |
CN111209205B (zh) * | 2020-01-08 | 2023-10-10 | 北京字节跳动网络技术有限公司 | 配置方法、装置和电子设备 |
CN111767208A (zh) * | 2020-06-02 | 2020-10-13 | 北京金堤科技有限公司 | 一种自动测试方法及装置 |
CN111767208B (zh) * | 2020-06-02 | 2023-09-19 | 北京金堤科技有限公司 | 一种自动测试方法及装置 |
CN112256319A (zh) * | 2020-10-27 | 2021-01-22 | 厦门吉比特网络技术股份有限公司 | 基于安全环境下的iOS安装包版本管理***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107632829A (zh) | 一种基于iOS***下的App自动化持续集成***及方法 | |
CN107896244B (zh) | 一种版本文件的分发方法、客户端及服务器 | |
US8627311B2 (en) | Systems, methods, and apparatus to deploy software | |
CN105389222B (zh) | 一种动态调用原生接口的方法、装置和*** | |
CN107704238B (zh) | 一种对项目进行打包的方法及装置 | |
CN107688464A (zh) | 软件定制服务器、方法及计算机可读存储介质 | |
CN109683899A (zh) | 一种软件集成方法及装置 | |
CN106610839B (zh) | 发布升级包的方法、轻量升级方法、装置及*** | |
CN104346184A (zh) | 应用打包装置及方法 | |
CN104423955A (zh) | 实现iOS应用自动编译的方法及*** | |
CN105450476A (zh) | 一种回归测试***及测试方法 | |
CN107870771A (zh) | 应用程序构建与升级方法及*** | |
CN111162953A (zh) | 数据处理方法、***升级方法和服务器 | |
CN110515625A (zh) | 任务构建方法、装置、设备及计算机可读存储介质 | |
CN113064630A (zh) | 移动端app自动打包方法、***、电子设备及存储介质 | |
CN110716786B (zh) | 一种页面展示方法、***及存储介质 | |
CN108647142B (zh) | 一种Gatling压测脚本本地预编译调试方法及*** | |
CN109408076A (zh) | 一种app批量发版方法、装置及*** | |
CN107590064A (zh) | 一种应用升级测试方法、装置和*** | |
CN110221855B (zh) | 一种app与服务器协同更新和离线运行的方法 | |
CN110752964B (zh) | 一种网络设备的测试方法及装置 | |
CN104917633A (zh) | 模拟fota升级的方法和装置 | |
US11789712B2 (en) | Data configuration deployment framework | |
CN115525545A (zh) | 一种基于Docker的自动化测试方法、***、设备及介质 | |
CN115617555A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180126 |