iOS 持续集成打包脚本

2019-01-06  本文已影响0人  纳爱斯
我是一名测试,所以编码能力有限,在大家看代码的过程中,若发现问题或者建议请及时指出,或者直接在 GitHub 提交代码
写此文档的初衷,因为两年前就写过 iOS 打包脚本,后来去做提升效能的测试工具的开发,就不在关注前端的知识了,现在
又要测试前端的业务,但是之前的打包不能通用,所以自己就重新整理了一套通用的打包脚本与大家分享一下

摘要:本文主要介绍 iOS 打包脚本所必须的配置,及注意事项。脚本中不涉及第三方打包工具,如:fastlane,或者第三方应用分发 平台,如:fir.im。完全是基于 Apple 官方提供的 xcodebuild 编译打包,通过 itms-services 分发应用,以及通过 altoolipa 上传至 iTunes Connecnt

项目

运行环境

运行方式

python3 ci.py

目录结构

├── Pipfile  // pipenv 安装依赖库的配置文件
├── README.md  // 使用说明文件
├── ci.py  // 入口文件
├── modify_plist.py  // 修改项目中的 APP 配置文件,及脚本中打包依赖的 plist 文件
├── compile.py  // xcodebuild 打包相关的配置,包含:clean、archive、export ipa、zip dSYM
├── archive.py  // 处理 Jenkins 归档的相关操作,详情请看代码注释
├── configurations  // 此目录存放 app 的配置信息文件(支持多个 APP 打包配置文件,在 `Jenkins + iOS 持续集成配置` 会进行持续集成配置讲解),详情请看下面文件的介绍信息
│   └── example.plist  // 配置文件模板
├── libs  // 此目录存在一些工具里及环境变量文件
│   ├── __init__.py
│   ├── configuration.py  // 初始化配置类
│   ├── env_enum.py  // 存在环境变量文件
│   ├── html_tools.py  // html 解析类(目前暂未使用)
│   ├── make_qr_code.py  // 生成二维码函数
│   └── plist_operation.py  // 操作 plist 工具类
├── plist  // 存在 exportOption 配置文件
│   ├── ad-hoc.plist
│   ├── app-store.plist
│   ├── development.plist
│   ├── enterprise.plist
│   └── itms-services.plist  // 此文件的作用是分发应用,与打包无关
└── static  // 存放静态资源文件
    ├── html  // 存放 html web 静态页面的目录,在 `Jenkins + iOS 持续集成配置` 这篇中会进行演示
    └── icon  // 存在 app icon 的目录

使用说明

基础参数配置

# 编辑 `lib` 目录下的 `env_num` 变量文件
# 需手动更改的参数(选择默认也可以)
DIST_CONFIGURATION_NAME = 'Release'
ARCHIVE_DIR_NAME = 'Products'
SCRIPT_DIR_NAME = 'scripts'
WORKSPACE_URL = f'{BUILD_URL}execution/node/3/ws/'

iTunes Connect 参数配置

# 编辑 `lib` 目录下的 `env_num` 变量文件
# iTunes Connect 配置
UPLOAD_ITUNES_CONNECT = os.getenv('UPLOAD_ITUNES_CONNECT', 'false') 
ITC_USER = os.getenv('ITC_USER', None)
ITC_PASSWORD = os.getenv('ITC_PASSWORD', None)

APP 配置文件参数讲解

example.plist

其它

itms-services(了解即可)

通过 itms-services 协议,发布或者分享 iOS 应用程序导读:itms-services 协议常用于 iOS 企业应用的无线部署,这可在不使用 iTunes 的情况下将内部软件发布或者分享给用户。

OTA 方式安装,是通过 Safari 解析链接中的 "itms-services://" 来实现的。
例如:
<a title="iPhone" href="itms-services://?action=download-manifest&url=https://github.com/NAISI-ZC/iOS-CI-Script/blob/master/plist/itms-services.plist">
  安装应用
</a>
Safari 会去读取 itms-services.plist 中的信息,如:iOS 应用的名称、版本、安装地址等。
什么是 OTA???
OTA 即 Over-the-Air,是 Apple 在  iOS 4 中新加的一项技术,目的是让开发者能够脱离 Appstore,实现从自己的服务器下载并安装 iOS 应用。
简单地说,就是用户只需要在 Safari 中点开一条链接,就能直接在主界面中安装 APP

配置持续集成请查看 Jenkins + iOS 持续集成配置

上一篇 下一篇

猜你喜欢

热点阅读