Debug CI 流程的最后一步就是将获得的产出物(ipa)部署到测试人员可触的环境中,本文将主要介绍在 Jenkins + fastlane 工具链中,如何将安装包自动部署到 fir.im 。
我们主要关注和解决 3 个方面的问题:
- fastlane 和 fir.im 的集成
- 打包内容(change log)的提取和生成
- 部署完成后的信息流
1. fastlane 和 fir.im 的集成
fastlane 和 fir.im 的集成可以简单通过 firim 插件来实现,插件的安装非常简单,只需要在项目根目录下执行:
fastlane add_plugin firim
接下来修改项目的 Fastfile,将 fir.im 添加到我们的构建流程中:
platform :ios do
desc "Debug Archive"
lane :beta do
mode = "Debug"
gym()
firim(
firim_api_token: "fir.im 用户 token",
)
end
end
如此一来,在完成构建和打包之后,对应的 ipa 文件即可自动上传到指定的 fir.im 账号中了。
2. 打包内容(change log)的提取和生成
fir.im 提供了 changelog
字段,用于提交当前构建包含的更新信息。由于整个 CI 工具链都是自动化无人值守的,因此我们考虑抓取 Git 的 commit message 作为更新信息,便于下载安装包的测试人员了解当前构建包含的修改内容。
Jenkins 可以通过适当的 Plugin 获取到 Git commit message,但实际测试中发现提取到的 message 格式较为混乱,且不易与 fastlane 的管道结合,因此我们考虑在 fastlane 中获取并格式化提交信息。
此处我们使用 fastlane 的 changelog_from_git_commits,直接修改 Fastfile,添加changelog_from_git_commits
步骤:
changelog_from_git_commits(
# commit message 范围:自上次成功提交至当前最新提交
between: [ENV['GIT_PREVIOUS_SUCCESSFUL_COMMIT'] || "HEAD^", "HEAD"],
# 格式化,{304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}s 代表 commit message,{304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}an 代表提交人名
pretty: "\n - {304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}s ({304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}an)"
# 忽略 Merge 信息
merge_commit_filtering: 'exclude_merges',
)
提取到的 commit message 将会被存储在变量FL_CHANGELOG
中,我们将在 firim 插件中使用,完整的 Fastfile 文件代码如下:
platform :ios do
desc "Debug Archive"
lane :beta do
mode = "Debug"
gym()
changelog_from_git_commits(
# commit message 范围:自上次成功提交至当前最新提交
between: [ENV['GIT_PREVIOUS_SUCCESSFUL_COMMIT'] || "HEAD^", "HEAD"],
# 格式化,{304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}s 代表 commit message,{304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}an 代表提交人名
pretty: "\n - {304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}s ({304f6ed0b3d59a494ff3bafd10e3c2eb0fd01a1c7bd37925658f43c0521dfc40}an)"
# 忽略 Merge 信息
merge_commit_filtering: 'exclude_merges',
)
firim(
firim_api_token: "fir.im 用户 token",
app_changelog: lane_context[SharedValues::FL_CHANGELOG]
)
end
end
至此,fastlane + fir.im 的打包—>上传工具链就配置完成了。
3. 部署完成后的信息流
在完成上传后,我们还需要实现自动化发送通知消息,告知测试人员的功能。fir.im 提供了多种不同的集成方式,可以在完成安装包部署后通过多种渠道推送消息,此处我们以企业微信为例介绍一下如何集成。
首先在企业微信的群聊中创建一个群机器人:

添加完成后我们可以获得一个机器人的 webhook 链接:

将此链接记录下来,然后添加到 fir.im 的应用管理-集成中:

即可在完成部署后,将构建消息推送到对应的企业微信群中了,其他消息渠道同理。

这个是什么主题呀~
是一个来自 ThemeForest 的付费主题 Reco