IOS App CICD(持续交付) 步骤脚本

前言

由于公司需要,所有项目都必须上CI CD,所有就有了接下来的Ios CI配置的坎坷之路。IOS CI的资料和并不多,因为官方也有不错的配套工具。例如直接用xocde来打包,如果内部流程简单,没有多个测试环境,发布频率较小的话,这无疑是最好的选择。还有就是macOS 版 Transporter App,您可以便捷地将 App 上传至 App Store Connect 以便在 App Store 上分发。除了上传构建版本,您还可以上传元数据包,查看交付进度(包括警告、错误和交付日志)以及交付历史,但是对于多环境的配置的切换和版本号的设置方面还需手动,这样就还是有出错的机会,所以就有了今天我们要说的CICD工具。目前最主流的CICD工具是Jenkins,他拥有着庞大的社区共享的插件酷,耗不夸张的说,CICD就约等于Jenkins,但不幸的是我们公司用的是一个叫Teamcity的工具,对IOS的交付来说并不太友好,所有很多脚本都是需要自己写,就有了下面的脚本教程。或许脚本内容大家不需要,但是我觉得步骤和流程方面还是有一定参考价值的,这里主要是通过App store里的TestFlight来做测试环境的,正式的话是直接发布到App store,至于TestFlight这里就不普及,可以自行去了解,正式发布到App store的话这边还没发布到正式,所以无法进行过多讲解。

步骤

1.Set Version(修改project.pbxproj文件或Info.plist文件的版本号)

一般CICD工具都是会生成一个构建的版本号的,我们可以拿这个版本号来当我们App版本号,其实就是设置project.pbxproj文件或Info.plist文件的版本号后再进行编译,笔者这边是设置了project.pbxproj文件,具体脚本如下:

    sed -i "" "s/AppBuildVersion/%Version%/g" project.pbxproj

注:这里的%Version%是CICD工具的一个变量

2.设置项目配置

这里也是通过 sed -i命令行进行修改配置文件,由于每个人的配置文件都可能不同,因为我这边用的是React Ntive来开发的,跟原生还是有一定差异, 所以这里就不提供脚本了,大概搜一下sed -i命令,几分钟就能写出该基本。

3.Install Mobileprovision(安装App描述文件)

每个IOS APP都会有一个自己的描述文件的,里面记录了你这App的一些基础信息和可用安装APP的设备(开发者描述文件)以及有权限编译和分发APP的证书,详细还需自己自行了解,这里就不再赘述太多。

我们这边的话需要安装两个描述文件,一个是开发者描述文件(编译时依赖)与发布描述文件(推送至App store Connetc时依赖),这两个文件可以去开发者平台创建后下载下来,具体安装脚本如下:

    DevUuid=`grep UUID -A1 -a dev_profile.mobileprovision | grep -io "[-A-F0-9]\{36\}"`

    cp dev_profile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$DevUuid.mobileprovision

    ReleaseUuid=`grep UUID -A1 -a release_profile.mobileprovision | grep -io "[-A-F0-9]\{36\}"`

    cp release_profile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$ReleaseUuid.mobileprovision

4.Security Import(证书导入)

证书这里的话也是有开发者证书与发布证书的说法,这里跟描述文件那里比较相似,需要将两份证书导入进去后才有权限进行编译和APP分发,具体脚本如下:

    security import dev.p12 -k ~/Library/Keychains/login.keychain -P %DevCertificatePassword%
    security import release.p12 -k ~/Library/Keychains/login.keychain -P %ReleaseCertificatePassword%

5.Security Unlock Keychain(证书解锁)

CICD Runner由于Mac Security 的ssh远程认证出现问题,需要输入Mac系统用户密码才可以获取到证书权限,具体脚本如下:

    security unlock-keychain -p %Password% ~/Library/Keychains/login.keychain

6.Archive(打包)

这里唯一注意的是要设置一下打包完成后包的存放路径,之后导出Ipa的时候要用到,脚本如下:

    xcodebuild -workspace ios/DemoApp.xcworkspace -scheme DemoApp clean archive -allowProvisioningUpdates -archivePath CICD/ios/build/DemoApp.xcarchive 

7.Export Archive As Ipa(将打包的xcarchive导出为ipa文件)

这里也是要设置下导出Ipa的路径,进行推送时要用到,脚本如下:

    xcodebuild -exportArchive -archivePath CICD/ios/build/DemoApp.xcarchive -exportPath CICD/ios/build -exportOptionsPlist CICD/ios/test.plist -allowProvisioningUpdates

8.Distribute App(将ipa文件推送上传至app store准备分发)

这里先进行Ipa的验证,通过之后就可以把包推送到App store Connetc了,脚本如下:

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

推荐阅读更多精彩内容