iOS打包自动化实践(四)

上一篇:iOS打包自动化实践(三)

打包到分发全程自动化的闭环。

本篇文章介绍了iOS包自动化分发的实现。

效果

功能实现的效果如图

效果.png

红框1:构建界面,包括选择remote,选择签名类型和填写分支名的功能。

红框2:构建历史,包括展示分发二维码和对应功能分支名的功能


扫描结果.png

扫描后页面如图,包括安装应用和安装证书两个功能。

知识扫盲

1、设备条件

由于此系统主要支持Debug签名,因此设备必须是设备id在developer.apple中注册过的测试机。如果是企业证书签名的话所有设备均可安装

2、分发条件

iOS的分发与安卓不同,安卓分发只需把包的下载链接在手机上打开即可,iOS包分发首先需要把包放在一个https服务器上,其次需要生成固定格式的plist文件(后文会讲),在plist文件中写入包的下载地址,并把plist文件放在一个https服务器上,在手机上打开该plist文件的下载地址,才可以触发下载安装。

实现

1、配置Mac环境

我们提到分发需要https服务器,正好我们可以通过打包的Mac自带的ApachCtrl将Mac直接配置成一台Https服务器,省的找运维了啊哈哈哈哈哈。

配置的主要原理是由于https建立链接需要SSL握手过程,SSL握手需要https证书,为了避免额外申请证书的费用和麻烦这里直接用openssl生成一张自签名的证书,自签名证书和权威机构颁发的证书主要区别是设备【手机】在与服务器通信之前需要下载并信任该自签名证书【原理同Charles抓https请求】,而权威机构颁发的证书不需要手动下载和信任。这就是为什么上文提到的扫描二维码之后除了安装应用之外还有安装证书的功能【证书只需要安装和信任一次即可】。

跟着 这篇教程 配置即可,主要是一些机械操作。

配置结束后站点目录即为/Library/WebServer/Documents,在该目录下的文件,在本地机器上拼接host【Mac的内网IP】可以访问,即表示配置成功。

例如:生成的证书放在路径:/Library/WebServer/Documents/server.crt,Mac的IP地址为192.168.1.25,则证书下载链接为:https://192.168.1.25/server.crt

2、基本流程

1、首先需要设计站点的文件目录。

文件目录.png

红框1:https证书

红框2:项目文件夹

红款3:根据build号(Jenkins的任务build号,环境变量名BUILD_NUMBER)命名文件夹,内包含分发页(index.html),ipa包,plist配置文件和二维码(qrcode.png)。

2、自动化流程

1、Archive生成ipa包。

2、根据文件目录规则创建文件夹,并把ipa包放入指定目录【此时ipa的下载链接已确定。

3、根据ipa的下载链接生成plist文件,放入指定目录【plist文件下载链接确定】。

4、根据plist文件下载链接生成二维码,并放入指定目录。

5、Jenkins配置界面展示二维码。

3、脚本

1、根据下载链接生成plist文件。plist格式固定,仅有一个变量url。使用cat重定向将内容写入plist_path。create_plist.sh

2、根据plist下载链接生成html分发页。create_html.sh

3、根据plist下载链接生成png二维码。create_qrcode.swift)

4、完整脚本(仅供参考)。入口脚本test_package.sh,在Jenkins配置界面的【Execute shell】中的入口调用:


#!/bin/bash

project_path=`pwd`

script_path="$project_path/fastlane/scripts/TestPackage/test_package.sh"

chmod +x $script_path

#执行脚本

$script_path\

--projectPath $project_path\

    --buildNumber $BUILD_NUMBER\

--buildCause $BUILD_CAUSE\

    --signingType $signingType\

    --remote $remote\

    --branch $branch\

    --nodeName $NODE_NAME\

4、Jenkins配置界面

1、要实现在构建历史界面插入二维码和分支名。先下载【Description setter】插件,然后在【配置-构建后的操作】中添加【Set build description】,并在【Description】中添加html代码。代码中有两个变量,BUILD_NUMBER和branch,分别对应Jenkins的build号和分支名。


<img src='http://192.168.1.24/Test_iOS_Package/${BUILD_NUMBER}/qrcode.png' /><br><br> <p><font color="blue">$branch</font></p>

FAQ

1、移动文件命令。

正常来讲/Library/WebServer/Documents路径需要root权限,因此需要使用sudo -S命令。

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

推荐阅读更多精彩内容