前段时间写了一篇关于"jenkins 持续集成 iOS项目"的文章,配置比较复杂.在更新到 Xcode 9以后,原来的配置方案不能用了.最近尝试用 fastlane+jenkins,继续实现持续集成. fastlane 是一个优秀的部署,发布应用的开源项目(github地址). 推荐使用 fastlane, 放弃使用 jenkins 里 Xcode-plugin 的原因: fastlane 多人维护,更新及时,部署简单. Xcode-plugin反之.
1:安装 fastlane:
官方版安装详细步骤 保证在 mac 上安装了最新版的 Xcode. 在Ruby 2.0.0及以上版本环境下安装:
sudo gem install fastlane -NV
然后,在终端进入你项目的根目录,执行以下代码:
fastlane init
由于 fastlane 版本更新迅速,高版本不向前兼容,推荐使用Gemfile,更新版本. 在终端执行命令,安装builder:
sudo gem install bundler
在你的项目根目录下创建Gemfile文件,文件写入以下内容:
source "https://rubygems.org"
gem "fastlane"
#如果使用 cocoapods管理项目依赖,增加下面的命令
#gem "cocoapods"
创建完后,在持续集成时执行命令:
bundle update
#如果第一次执行,用 bundle install 代替
接着编辑项目目录下的./fastlane/Fastfile文件内容(首先保证你的项目在 Xcode 中,已配置好证书和对应的描述文件):
lane :beta do
gym(scheme: "AppScheme”,
#output_name 指打包完成后, 输出ipa文件的名字
output_name: "APPName_Debug”,
#export_method 打包版本选择
#分别是app-store、ad-hoc、development、enterprise
export_method: "development”,
export_options: {
provisioningProfiles: {
#左侧表示你的项目的bundle id
#右侧表示你的项目在选择export_method后,对应的描述文件名字
"com.test.appidentifer" => "ProfilesName"
}
})
end
(还有一种官方推荐的 match 方法匹配证书和描述文件,由于笔者现在用企业版账号开发应用,不能随意撤销证书,所以没用 match 的方法.)
2:安装 jenkins:
在macOS系统上,我们需要先安装 JDK,然后在 Jenkins 的官网 下载最新的 war 包。
下载完成后,打开终端,进入到 war 包所在目录,执行以下命令:java -jar jenkins.war --httpPort=8080
待Jenkins启动后,在浏览器页面输入以下地址,打开 jenkins:
http://localhost:8080
注意:使用其他方式安装的 Jenkins 可能导致后续步骤失败,请确认使用推荐的方式来安装 Jenkins。
开始创建工程
配置仓库代码链接
添加执行的 shell 代码
shell 内容:export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#上面命令指定编码方式,如果不指定,执行 fastlane beta 会报错
bundle update
fastlane beta
最后,增加构建后操作步骤,选择 Archive the artifacts,可以将打包好的 ipa 呈现在当前页面,方便"测试同事"点击下载.点击"保存",然后开始构建项目.
常见问题
出现 fastlane: command not found 怎么办? 解决方法一:这个情况一般是由于 jenkins 没有设置正确的 $PATH 环境变量导致的。正确设置的方法为: 在终端执行 echo $PATH,记录下输出的结果 在 jenkins 中系统管理-系统设置中,找到 环境变量(Environment variables) 在 key 中填写 PATH,在 value 中填写第一步中输出的结果 保存即可。
解决方法二:请确认你安装 Jenkins 的方式和本文中推荐的方式一致。使用其他方式安装的 Jenkins 也经常会出现此问题。 参考: fastlane官方教程 蒲公英官网:使用 Jenkins 实现持续集成 (iOS)