0%

测试及持续集成自动化Fastlane

还是回到了这里,记录保存。

  1. fastalne
    1. 安装
    2. code sign 之 手动
    3. code sign 之 match
    4. pilot 2fa 还有 App Store Connect API Key
  2. 问题
    1. badge 修改 app icon
      1. dyld: Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
      2. Library not loaded: /usr/local/opt/libffi/lib/libffi.7.dylib
  3. 参考
    1. 发布时候修改app icon图片
    2. 其他

fastalne

安装

  • xcode-select --install
  • sudo gem install fastlane --verbose
  • 到项目目录下执行 sudo fastlane init

code sign 之 手动

发现除了配置 match 来实现签名外,手动配置也可以,貌似也不麻烦,为什么还要 match 呢?

- run: base64 -D -o xxxx.p12 \<<< $Distribution_pac_demo_key
- run: base64 -D -o xxxx.mobileprovision \<<< $Distribution_pac_demo_profile_key
- run: fastlane beta keypath:`pwd` # Run tests using Fastlae

相关ci参数设置

APPCONNECT_ISSUER_ID

APPCONNECT_KEY_CONTENT

APPCONNECT_KEY_ID

APP_DISTRIBUTION_KEY

APP_DISTRIBUTION_PROFILE

APP_PROFILE_NAME

code sign 之 match

这是最困难的点了应该,劝退的关键点。
应该很少有直接 revoke 所有证书的操作的,所以一般都是怎么在现有证书的基础上进行 code sign。

步骤:(注意看下面的说明)

  1. 建立私有repo,目录结构固定
  2. 加密相应的证书及p12,然后放到相应的目录
  3. 加密相应的provision,然后放到相应的目录
  4. git add & push
  5. 测试是否成功使用命令 fastlane match adHoc或者appstore或者developtment --verbose
  6. 成功后,去主项目的目录,执行 fastlane match init
  7. 配置matchfile

2021-06-24
这样的方式可能会带来一个问题,也就是ci环境运行的时候出现 error: Missing private key for signing certificate.
就是因为手动加密造成的与 fastlane match 不一致,可以正常解密 repo 获得 cer和p12,但是 install to keychain 的时候,出现错误。
解决方法就是上述步骤的(2,3,4)替换成 fastlane 官方提供的加密 match repo 的方法就可以了Manually manage the fastlane match Repo,还是官方的文档靠谱。
(ps.早一天就看到这个官方的说明了,那时候看有点复杂没有耐性子看完英文,导致只去搜索了,发现出问题的人不是那么多,当时还想,这么常规的错误竟然没有很多人遇到,原来这个问题常规,但是官方给了方法了,所以就没那么多人发表文章了哈哈)

pilot 2fa 还有 App Store Connect API Key

使用 App Store Connect API 替代输入账号密码的方式更加利于自动换,而且很好的解决了2fa问题。
其中的p8文件,可以用base64的方式来指定,也略去了指定p8文件路径的问题。

问题

badge 修改 app icon

这两天调试 badge,ci cache 遇到了几个问题,后面基本都断定是 brew cache 后,环境变量没有正确设置的原因。

dyld: Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib

这个算是基本的问题,就是找不到这个库,需要 brew link,可以先用 brew doctor 看看到底那些库没有link好。

Library not loaded: /usr/local/opt/libffi/lib/libffi.7.dylib

这个确不能像上面那样简单的link解决。

参考

发布时候修改app icon图片

Caching go on Mac OS build environment?
CircleCIでHomebrewをキャッシュする方法
How to add a shield on the App Icon of beta builds

其他

pilot
How to Fix Your CI to Avoid Apple’s 2FA
Using App Store Connect API with Fastlane Match
iOS 用fastlane进行团队证书管理
fastlane match 运用在现有的证书环境下
使用fastlane match自动和手动管理证书
iOS使用fastlane一键打包审核
Setup Fastlane MATCH manually — iOS !
Fastlane/Jenkins:一人團隊也用得上的 Continuous Delivery 系統