内容简介:为了实现也就是
Fastlane 持续集成小记
fastlane 是一个关于打包编译的小 工具 合集。它能够很方便的帮助开发者集成自动化编译上传环境,具体小工具的内容可以参考 这里
1. 目的
为了实现 持续集成
,持续集成能带来的好处可以参考 这篇文章 ,同时持续集成还是测试驱动开发(TDD)的前提之一。
2. 概述
2.1 fastlane 安装与基础概述
2.1.1安装
-
xcode-select --install
Xcode 命令行工具(依赖项)。 -
sudo gem install fastlane -NV
通过 Gem 安装 fastlane。 -
bundle update fastlane
升级 fastlane,适用于已经安装过的用户。
2.1.2 工具简要概述
deliver
上传屏幕截图,二进制数据和应用程序
snapshot
自动截屏
frameit
为截屏添加设备框架
pem
自动化生成和更新应用推送描述文件
sigh
生成下载应用商店的配置文件
produce
命令行在 iTunes Connect 创建一个新的 app
cert
自动创建 iOS 证书
pilot
在终端管理测试和建立的文件
boarding
邀请 beta 测试
gym
建立的新的发布版本,打包
match
使用 git 同步开发者证书和文件配置
scan
iOS 上执行测试用例
2.1.3 文件系统
Fastfile
定义所有的lane任务,自定义的功能也在这里。
Appfile
是用来存储一些App公共信息的,比如app_identifier,apple_id,team_id,itc_team_id(ADC的team_id)
Deliverfile
deliver的配置文件
Snapfile
截图配置文件
/metadata
保存各种元信息
/screenshots
截图信息
2.2 fastlane
也就是 Fastfile
文件里面定义的内容,有点类似宏定义,在这个文件里面你可以自定义某项 操作 ,比如提交到Testflight,或者是执行自动化测试。
2.2.1 脚本执行的生命周期
执行顺序 | 方法名 | 说明 |
---|---|---|
1 | before_all | 在执行 lane 之前只执行一次 |
2 | before_each | 每次执行 lane 之前都会执行一次 |
3 | lane | 自定义的任务 |
4 | after_each | 每次执行 lane 之后都会执行一次 |
5 | after_all | 在执行 lane 成功结束之后执行一次 |
6 | error | 在执行上述情况任意环境报错都会中止并执行一次 |
2.2.2 语法定义
desc描述
lane : lane_name do定义一个任务,任务名称一旦设定好了,可以任意调用
fastlane : lane_name optional_paramwhen '' else类似 if define XX else XXX
import_from_git(url: 'XX')导入 git 上的文件
fastlane search_plugins 查看可用的fastlane
插件
2.3 其他基础工具
2.3.1 cert
自动创建管理iOS代码签名证书,基本上会查看 Developer 上的证书,如果不存在的话就会自动创建一个,然后下载到本地,再安装。建议先定义一下 DEV_PORTAL_TEAM_ID
这个环境变量
2.3.2 scan
提供测试功能,用法是直接 fastlane scan
即可,前提是已经在过程里面写好了单元测试用例或者是 UI 测试用例。
同时会自动在 /test_output
下生成结果描述
+--------------------+---+ | Test Results | +--------------------+---+ | Number of tests | 1 | | Number of failures | 0 | +--------------------+---+
其他参数:
--workspace "Example.xcworkspace" --scheme "AppName" --device "iPhone 6" --clean 构建测试的一些参数
你也可以建立 Scanfile 来进行配置
Scanfile:scheme "Example" devices ["iPhone 6s", "iPad Air"] clean true output_types "html"
2.3.3 sigh
自动生成 Provisioning Profile,Sigh会自动根据Appfile里设置的app_identifier从ADC(苹果开发者中心)生成证书,并下载到项目根目录下,建议不要把这个文件夹同步到项目的git中
带的参数有:
-adhoc
-development 开发证书
-o "~/path/" 制定输出路径
download_all 下载所有的 Provisioning Profile
repair 修复过期或者无效的 Provisioning Profile
manage 管理本地所有的 Provisioning Profile
manage -e 管理本地所有的 Provisioning Profile 删除不用的2.3.4 gym
工程构建和签名,使用 fastlane gym init
会生成一个 Gymfile
文件用于设定导出目录、导出 ipa 名称、导出方式(adhoc、app store)。
fastlane gym
即可进行打包操作,生成 ipa 文件和 dSYM 文件。
scheme "Example" #如果不清楚应该选择哪个 scheme 可以使用 xcodebuild -list clean true output_directory "./build" output_name "MyApp"
其他参数:
--export_method ad-hoc 只导出文件而不上传到 App Store 和 ITunes Connect,当然还有其他的导出方式,包括: develop、enterprise、adhoc、app-store、package
--include_bitcode true --include_symbols false 构建时候的一些参数
--workspace "Example.xcworkspace" --scheme "AppName" --clean 设置构建应用的信息2.3.5 deliver
Deliver可以完全管理与iTC的交互,包括:
- 上传和下载多语言截图
- 上传和下载多语言元数据
- 上传二进制文件
deliver download_screenshots
下载 ITC 上的截图
deliver download_metadata
下载 ITC 上的元信息
fastlane deliver --force ... [14:13:33]: This might take a few minutes. Please don't interrupt the script. [14:14:57]: iTunes Transporter successfully finished its job [14:14:57]: --- Successfully uploaded package to iTunes Connect. It might take a few minutes until it's visible online. --- [14:14:57]: Finished the upload to iTunes Connect
关于两步验证:
- 前往 https://appleid.apple.com/account/manage
- 在 Security 中设置
APP-SPECIFIC PASSWORDS
- 将苹果生成的密码填写在
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
中
2.3.6 match
证书管理和配置解决方案,不支持企业账户
- 使用
fastlane match init
来创建Matchfile
文件,需要你填入 git 仓库地址(SSH)。 - 使用
fastlane match development
或者是fastlane match appstore
来将证书上传到仓库中,需要提供一个passphrase,每一个文件都会使用 openssl 进行加密,请记住你输入的。 passphrase。 - match
2.3.7 pem
自动生成和更新你的推送通知证书
fastlane pem --development
生成开发的推送证书
-p "MyPass" 添加文件密码
-o my.pem 给输出的文件制定名字2.3.8 pilot
构建的 App 上传到 TestFlight
fastlane pilot upload
执行上传
其他参数:
--skip_submission 跳过分发动作
list 列出测试人员
builds 列出所有构建的版本
add email@invite.com 添加新的构建人员
find email@invite.com 查找构建人员
remove email@invite.com 移除指定的构建人员
import -c "csv_file" 导入测试人员列表2.4 其他 Action
swiftlint swift 代码验证库
检测 Xcode 版本,比如ensure_xcode_version(version: "7.2")
xcclean 清除工程缓存
xcarchive 工程打包
cocoapods 执行pod install
clean_cocoapods_cache 清除 Pod 缓存
carthage 运行carthage
xcbuild 构建应用版本
xcode_install 确保特定版本的 Xcode 已经被安装了
increment_version_number 自动给版本数加一,或者指定为特定版本
update_info_plist 更新 plist 文件内容,比如scheme、display_name
increment_build_number 增加 build 数
register_devices 添加一个新的测试设备
set_changelog 将更改内容发布到 ITC
reset_git_repo 将 git 里面没有更新的部分丢弃
hg_add_tag 打 tag
last_git_tag 获取最近的 tag
git_pull 执行 git pull 操作
git_add 执行 git add 操作
push_to_git_remote push本地修改到远程仓库
notification 发送 mac 通知
ifttt 使用 IFTTT 服务
download 执行下载操作
prompt 需要用户确认
backup_xcarchive 将打包文件存储到其他位置
zip 压缩文件
案例以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。