(Mac)iOS自动化打包(Jenkins+fastlane+pgy
环境
| 名称 | 版本 |
| — | — | — |
| macOS | 10.14.4 (18E226) |
| Xcode | Version 10.2.1 |
| ruby | 2.6.3 |
| fastlane | 2.123.0 |
Fastlane安装
Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。
安装过程如下
安装ruby(brew安装最新版)
1 |
|
更改gem源
- 更改
1
2gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.com/ - 查看 如果是以下结果说明正确,如果有其他的请自行百度解决
1
gem sources -l
1
2*** CURRENT SOURCES ***
https://gems.ruby-china.com/ - 安装fastlane
1
2
3
4
5#安装
gem install -n /usr/local/bin fastlane -NV
#检查是否安装成
fastlane --version
至此,我们已经可以使用fastlane自动化打包了
Fastlane配置
fastlane init
cd 到工程主目录执行fastlane init
我这里选择的是手动配置
1 | cd /Users/vic/.jenkins/workspace/jike-iOS-Fastlan |
会在你项目工程的目录下生成一个fastlane文件夹,里面有Fastlane的配置文件,一个是Appfile文件(保存了苹果开发者的相关信息),一个是Fastfile文件(运行脚本)
编辑Fastfile文件(运行脚本)
有时候一天需要打好几个包,为了区分,我们这里实现一个递增build号的功能。
- 定义一个递增build号的函数,添加到Fastfile中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24def updateProjectBuildNumber
currentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}."
# => 为当天版本 计算迭代版本号
lastStr = build[build.length-2..build.length-1]
lastNum = lastStr.to_i
lastNum = lastNum + 1
lastStr = lastNum.to_s
if lastNum < 10
lastStr = lastStr.insert(0,"0")
end
build = "#{currentTime}.#{lastStr}"
else
# => 非当天版本 build 号重置
build = "#{currentTime}.01"
end
puts("*************| 更新build #{build} |*************")
# => 更改项目 build 号
increment_build_number(
build_number: "#{build}"
)
end - 实现自动打包的完整Fastfile如下: 注意:蒲公英的 api_key 和 user_key,开发者在自己账号下的 账号设置-API信息 中可以找到。打其它类型的包的方法与development类似,可自定义一个新的lane实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69# 定义fastlane版本号
fastlane_version "2.123.0"
# 定义打包平台
default_platform :ios
def updateProjectBuildNumber
currentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}."
# => 为当天版本 计算迭代版本号
lastStr = build[build.length-2..build.length-1]
lastNum = lastStr.to_i
lastNum = lastNum + 1
lastStr = lastNum.to_s
if lastNum < 10
lastStr = lastStr.insert(0,"0")
end
build = "#{currentTime}.#{lastStr}"
else
# => 非当天版本 build 号重置
build = "#{currentTime}.01"
end
puts("*************| 更新build #{build} |*************")
# => 更改项目 build 号
increment_build_number(
build_number: "#{build}"
)
end
#指定项目的scheme名称
scheme="Ruguo"
#蒲公英api_key和user_key
api_key="8e860ee5ba4996f9b19e56c28e07846a"
user_key="542e73b113b5908da8b028805bf7e837"
# 任务脚本
platform :ios do
lane :development_build do|options|
branch = options[:branch]
puts "开始打development ipa"
updateProjectBuildNumber #更改项目build号
# 开始打包
gym(
#指定需要编译的scheme
scheme:"#{scheme}",
#输出的ipa名称
output_name:"#{scheme}_#{get_build_number()}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method:"development",
# 指定输出文件夹
output_directory:"./fastlane/build",
)
#puts "开始上传蒲公英"
# 开始上传蒲公英
#pgyer(api_key: "#{api_key}", user_key: "#{user_key}", password: "alpha", install_type: "2")
end
end
自动打包并上传蒲公英,
在终端输入便会进行自动打包并上传蒲公英了。
1 | fastlane development_build |
Jenkins安装
下载安装Jenkins。具体安装过程可参考 Mac Jenkins搭建
Jenkins配置
点击新建,输入名称,构建一个自由风格的软件项目
添加Git仓库地址,可以是HTTP也可以是SSH。点击Add
构建,点击“添加构建步骤”,选择Execute shell。
1
2
3
4
5
6
7
8
9export PATH=/usr/local/bin:$PATH
fastlane development_build
filepath=`pwd`fastlane/build/Ruguo*.api
file=`ls $filepath`
if [ $uploadPgy = true ]
then
curl -F "installType=2" -F "password=alpha" -F "file=@$file" -F "uKey=542e73b113b5908da8b028805bf7e837" -F "_api_key=8e860ee5ba4996f9b19e56c28e07846a" https://qiniu-storage.pgyer.com/apiv1/app/upload
fi添加完成之后保存,点击立即构建