iOS开发之CI/CD基础建设内容介绍

1.简介

持续集成和持续部署是现代软件开发中非常重要的一环。它们能够帮助开发人员快速、高效地构建、测试和部署应用程序。本文将介绍如何使用CI/CD工具来提高开发效率,iOS方向工作内容。

本人就职于xxx公司基础架构组,负责 iOS 方面的CI/CD基础建设工作。本人在就职期间所做的事一整套解决多团队多人员并行开发,测试,集成,发布的解决方案。可解决不同业务,不同应用,不同版本的并行开发的难题,使iOS客户端开发组合更加灵活,节省繁杂的编译和集成工作,让开发者更专注于代码层面的开发工作。

核心特点:

组件模块化管理:组件模块化,低耦合通过Router通讯以及中间件通讯。

自动化操作:简单通过mac App图形化管理工具就可以实现一键安装并运行。

权限控制:应用负责人对该模块组件负有主要责任和管理权限,控制代码质量以及集成合并权限,每个模块组件需要在网页云效中创建并绑定git地址等其他设置。

开发高效:本地代码二进制编译节省编译时间,测试包代码二进制编译节省编译时间,一键集成省去了开发人员维护版本工作。

2.本地开发

1.首先下载安装mac App一体化管理工具,管理工具可以切换本公司其他所有APP工程进行开发。

2.git clone 某乎壳工程到电脑桌面使用一体化管理工具打开。

3.打开一体化工具软件并选择开发的项目工程自动识别项目基本信息以及组件信息等。

4.点击 Make 按钮命令组件以二进制形式安装到开发工程,这样节省编译时间,运行速度非常快,可以编写代码开发工作了。

5.点击 Make Source 按钮组件以源码的形式安装到开发工程。

6.可以更换开发其他工程

7.可以清理二进制缓存在本电脑中。

8.可以设置安装完毕自动使用xcode软件打开工程,也可以使用VSCode打开,以及Finder打开。

9.组件列表页分两部分,一部分是定制正在开发的组件,一部分是其他组件。

10.定制开发组件的切换可以选中组件并右键使用clone并集成到工程。

11.定制组件可以多选并右键使用一键创建联合MR并执行CI构建打包流程等。

12.控制台显示安装过程打印信息,失败报错问题一目了然的显示在其中。

13.安装完毕就可以使用xcode编写代码,编译,调试,安装等工作。


3.测试验收集成

测试

1.使用gitlab代码管理平台以及gitlab-runner ( gitlab 提供的一个 CI 持续集成的服务运行管理器)。

2.gitlab-runner编程配置触发时机是创建 MR。

3.当MR创建的时候gitlab-runner触发执行自定义脚本。

4.流程有pre-build,build,post-build(已废弃)。

5.pre-build过程中主要有网页清理旧的二维码已经下载地址信息,swiftlint检查等。

6.build过程主要是编译本次自定义代码打包成ipa并通过扫码下载安装,为了给开发者测试以及提交给QA进行测试,以及dsym上传等过程。

7.build过程可以通过MR描述输入自定义参数控制显示不同信息以及打包方式(合并校验检查,自定义版本号,二进制和源码打包切换,包体积分析显示等)。

8.当pipeline流水线通过之后,会将ipa上传保留到服务器并生成二维码显示在MR的操作网页上。

验收

9.MR网页是自定义的网页包含代码对比,代码code review,QA扫码下载安装测试,验证通过。

集成

10.一键集成功能无须开发者更改本次代码的版本号相关,会自动创建jenkins任务,任务执行合并MR的代码并自动生成新的版本号集成写入到项目壳工程,提交到远端仓库,达到本次开发代码进入工程的目的。

11.如果组件MR的目标分支是版本分支master_9.35.0,壳工程分支是master_9.35.0,那本组件的本次提交由featrure合并到master_9.35.0,生成版本号9.35.0.x,写入到xxx.rb文件参数的s.version = 9.35.0.x,提交并集成到壳工程master_9.35.0,同时触发master_9.35.0合并到dev并生成9.36.0.x版本号写入到xxx.rb集成到壳工程dev分支

12.如果本组件是一个基础组件,需要集成的目标APP有某乎,某堂等多个APP。那本次集成任务会触发多个jekins任务分别写入到不同的APP壳工程中。

二进制化

13.进入到工程的代码变更会触发重新制作二进制。

14.提交代码不断进入项目不断制作二进制,下载使用二进制,达到一个循环的平衡,如图所示。

统计汇总

15.以上CI/CD服务系统为5个APP不断循环服务。

16.通过grafana监控平台,可以看到制作上传下载二进制数量,每周打MR包1000个左右。

4.某乎mPaas平台发布系统

1.发布打包平台雅典娜系统。

2.选择当前要操作的APP,然后根据发版节奏每周二14:00开始发车,通过雅典娜网页系统点击选择从dev分支发车,发车版本号9.35.0版本。

3.雅典娜系统后台会触发调用jekins链接并传递参数给jenkins服务,执行一个jenkins任务,jenkins任务会选择空闲的打包机,自动执行预定脚本,脚本系统使用ruby语言编写的fastlane。

4.首先从dev分支checkout master_9.35.0,并提交至远端。

5.然后根据当前工程所使用的的组件发车分支设定为master_9.35.0(这一步在后面说明)操作成功的通知,通过企业微信形式发送到群聊。

6.新发车的版本是9.35.0,如果这个时候线上版本9.34.0修复bug,只需要把MR的组件目标分支改成9.34.0,以及集成的壳工程分支改成9.34.0,一键集成之后,代码进入预定版本9.34.0,以及会自动回合到9.35.0版本并集成到9.25.0壳工程分支。

7.每次要操作打包之前先更新build版本号,需要使用雅典娜系统更新版本号,版本号写入到工程的info.plist的shortVersion。

8.然后使用雅典娜点击本次打包执行商店包,灰度包,集成测试包,支付性能包,等多种不同的包。

9.商店包会执行一个jenkins任务,pod install ,build,以及自动上传到苹果后台等操作,也会对组件关系依赖分析,本地组件版本记录上传,等待处理完毕只需要提审就可以了。

10.通过雅典娜系统可以查询两个线上版本之间的MR代码变更,为了bug追踪查询。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容