Fastlane 持续集成小记

栏目: 服务器 · 发布时间: 6年前

内容简介:为了实现也就是

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_param

when '' 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 这个环境变量

结果:

Fastlane 持续集成小记

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 上的元信息

一些参数信息可以在 这里查看

需要注意的是 至少要填写 icon 地址

如果需要填写评级的需要创建一个 itunes_rating_config.json 文件

结果如下:
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

关于两步验证:

  1. 前往 https://appleid.apple.com/account/manage
  2. 在 Security 中设置 APP-SPECIFIC PASSWORDS
  3. 将苹果生成的密码填写在 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD

2.3.6 match

证书管理和配置解决方案,不支持企业账户

  1. 使用 fastlane match init 来创建 Matchfile 文件,需要你填入 git 仓库地址(SSH)。
  2. 使用 fastlane match development 或者是 fastlane match appstore 来将证书上传到仓库中,需要提供一个passphrase,每一个文件都会使用 openssl 进行加密,请记住你输入的。 passphrase。
  3. 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 代码验证库

oclint

ensure_xcode_version

检测 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 压缩文件

案例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

引爆用户增长

引爆用户增长

黄天文 / 机械工业出版社 / 2017-11-1 / 79.00

本书是用户增长领域的开创性著作,是作者在去哪儿、360、百度等知名企业多年用户增长工作的经验总结。宏观层面,从战略高度构建了一套系统的、科学的用户增长方法论;微观层面,从战术执行细节上针对用户增长体系搭建、用户全生命周期运营等总结了大量能引爆用户增长的实操方法和技巧。 不仅有方法论和技巧,而且非常注重实操。对电商、团购、共享经济、互联网金融等4大行业的50余家企业(360、美团、滴滴等)的1......一起来看看 《引爆用户增长》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具