

苹果账号证书体系自动化策略
source link: http://saitjr.com/ios/apple-account-cer-automation-strategy.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

处理苹果相关流程半年多了,每天都在近十个账号之间来回切换,每天都有各种安装证书、添加设备的问题。鉴于此,整理了一个将这个流程自动化的方案。
环境信息
fastlane 2.85.0
padrino 0.14.3(02feacb)
先来说一下背景,现有公司账号七个,企业账号两个,即将新增个人账号八个,测试机 200+,iOS 开发 100+,项目 20+。
再来说一下目标,保证以下的操作流程,都能自动化处理,或者,都能一键处理:
账号相关(Developer / AppStore Connect)
- App 账号迁移
- TestFlight Build 上传与移除
- 人员角色添加与删除(开发者与市场人员,并清理离职人员)
- 账号续费、新协议、设备清理监控
证书相关(cer / profile / 设备)
- AppID 创建,相关根证书、推送证书创建,profile 创建
- 证书、profile、推送证书过期监控与新建
- 设备添加与 profile 更新
设备相关
- 拿到任何一台设备,能知道已经添加到了哪些账号中,能一键下载对应 profile 进行调试
- 对于需要添加的设备,能一键发起请求,进行添加
现有的条件
现有的,能够提供支持的服务有:
- 持续集成服务:已完成 TestFlight 上传功能
- OA:公司 OA 服务
- fastlane match:全部的账号和证书已经统一管理
- fastlane spaceship:提供访问 Developer 和 AppStore Connect 的接口(详情可以看之前的文章 fastlane spaceship 源码浅析 )
用户管理
对接 OA,fastlane spaceship 能通过登录各个账号,遍历全部 User,然后访问 OA 进行查询用户是否已经离职。
时间节点监控
账号、协议、设备清理这部分都没找到可以直接用的接口,可以自己写脚本爬取。而且这三个需求比较集中,都是在 developer.apple.com 的页面。可以开启定时任务进行监控。
TestFlight
fastlane pilot 已经提供上传 TestFlight 的功能。在 App 进行迁移时,需要将全部 TestFlight 的 Build 设置为过期,这个接口 spaceship 也有提供,可以调用 Spaceship::TestFlight::Build
的 expire!
方法。
证书相关
热身结束,正片开始!关于现有的 fastlane match 的流程,可以参考之前的文章 fastlane match 源码浅析与最佳实践 。
告别 fastlane
由于 fastlane match 会将加密以后的证书和 profile 推的 git 上,所以大家都可以访问,看起来没什么毛病。但是当开发和账号多了以后,会有什么问题呢?
- 请问,我是美拍的开发,我应该拉取哪个分支的证书呢?
- 请问,为什么我的 fastlane 卡在了 clone repo 这一步?
- 请问 xx 账号还能添加设备吗?
- 请问,方便给我开一下 repo 的权限吗?
- 为什么我拉取 xx profile 失败了啊?
每一个问题,都可能有着不一样的原因:
- ssh 未配置。
- 在 git clone 的过程中有输入操作,比如:ssh 设置了密码,know_hosts 冲突等。
- 账号过多,开发并不能理解每一个账号的作用,也并不知道自己项目上架的那个账号叫什么。
- 除了 iOS 开发以外,可能还会有实验室与测试人员需要进行调试。
- 因为账号不开放,导致开发无法知道账号的基本信息。
- 对证书和 profile 不熟悉,导致全部问题都需要进行询问,如当前 AppID 支持的服务等。
其中,最大的问题在于,每个人本地环境千奇百怪,导致出现各种失败。所以,需要解决的首要问题,就是脱离本地环境,本地不再依赖 fastlane。
推送证书
因为 fastlane match 只维护了根证书和 profile,每次推送证书过期、App 迁移、新的 App 注册、开发下载进行调试,都需要手动导出推送证书。而 fastlane pem 这个针对推送证书的 action,每次都只能生成新的,而不能直接下载已存在的。看了一下 issue ,原因是因为没办法知道根证书。
Emmm…这就很微妙了,明明我所有的证书都是你在管理啊 :confused:。更可气的是,那好歹给我提供 cer 的下载,我自己合成根证书可以吧?不可以 。然后打开 pem 源码一看,证书都已经下载了,但就是不给你:
def certificate if PEM.config[:development] Spaceship.certificate.development_push else Spaceship.certificate.production_push end end
所以,可以手动调用 spaceship 进行下载,然后手动合成。推送证书,DONE!
整个流程
为了用户本地不再依赖 fastlane,我们做了一个客户端 dogeX。
为了对账号进行分类,方便项目组理解,我们给 dogeX 提供了服务端 dogeX Server。
除此之外,Sever 还会处理证书相关的各个自动化流程,后续还有可能给持续集成的打包服务器提供证书管理服务。
那么,如何将流程串起来呢?
大致就是这个样子的。关于 dogeX Server 的内部设计,都是功能开发了,不再细说。
dogeX Server
都说了不细说,这个 Section 又是什么呢…来谈谈技术选型。
考虑到需要原生支持 fastlane,也就是 Ruby 的调用,所以选择了轻量级 Ruby web framework ———— padrino 。
考虑到 Server 需要调用钥匙串相关命令进行证书、profile 等信息读取,调用 fastlane,所以选择 macOS 做服务器。
最后
整个策略重中之重就在于证书这部分的处理,除了流程上的一些方案以外,账号的定义也是必不可少的。公司账号只添加常用的测试机,保证能够正常调试推送等功能。项目组自己的设备,包括开发人员、测试、实验室、公共支撑等,均添加到每个 BU 自己申请的个人账号中。众多账号之间共用一个 git repo,以分支的形式进行管理。
目前策略大致就是这样,欢迎讨论。
Recommend
-
16
SSL协议安全系列:PKI体系中的证书吊销 GoSSIP_SJTU
-
57
不论产品属于哪种类型的哪个行业,每个用户在产品上注册了一个账号都是一个数据ID。那要如何从一个产品经理的角度,去探索一个账号体系的搭建? 从0到1搭建一个产品,就应该从最基本的一个用户账号开始说起。虽然一个注册登录到整个账号体系看起来很简单,也是每个...
-
53
-
53
作者 | 黄超 杏仁运维工程师,关注容器技术和自动化运维。 前言 当今随着人们对网络安全意识的增强,越来越多的网...
-
53
笔者对用户注册、登录和认证等账号功能设计进行了分析,结合相关流程总结了自己的思考和理解,与大家分享。 一、背景 最近公司因为业务拓展需求,决定推出一套新的业务平台支撑业务发展。由于涉及到用户的注册,登录和认证等功能,所以想把最近的一些思考和理解总...
-
15
在上一章中作者对合并/打通这两种账号的交互做了概念区分及处理方式的讲解,详情: 《账号合并/打通的区分及处理》 ;接下来会分为两篇分别对账号合并、打通后的历史数据处理方法...
-
10
关于 To B...
-
8
互联网的账号自带备忘机制; 一、业务背景 通常在系统研发的过程中,需要不断适配各种业务场景,扩展服务的领域和能力,一般会将构建的产品矩阵划分出多条业务线,以便更好的管理; 由于各个业务...
-
9
互联网的账号自带备忘机制; 一、业务背景 通常在系统研发的过程中,需要不断适配各种业务场景,扩展服务的领域和能力,一般会将构建的产品矩阵划分出多条业务线,以便更好的管理; 由于各个业务线的数据...
-
12
如果你从事微信生态相关工作,对公众号、小程序、企业微信获取 UnionId的方法还有些分不清,那看这篇文章就对了。本文详细地介绍了微信生态账号体系中,各ID介绍与Unionid的获取。欢迎一起学习探讨。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK