Jenkins+xcodebuild+fir持续集成
最近在搞项目的自动化构建,一路过来,可谓是踩坑无数,故特地将某些细节记载下来,方便有需要的人。
之前看过一些文章,所以一开始准备用Jenkins上的xcode插件来构建,后来才发现那些文章写得虽好,但里边的很多配置都过时了,所以建议大家使用脚本来构建。插件会失效,但脚本不会过期。
这里特别说明:
找资料要找最新发布的。
找资料要找最新发布的。
找资料要找最新发布的。
在开始之前,建议大家先建立一个能够正常archive并export的空工程,因为真实的工程代码量很大,后面多次测试构建会很花时间。
1、下载安装Jenkins
![](https://img.haomeiwen.com/i1381088/b17b781b237b35ed.png)
Jenkins是基于Java环境的,所以电脑上必须先安装Java,然后去Jenkins官网(https://jenkins.io/
)下载安装Jenkins。具体安装过程可参考以下文章:
手把手教你利用Jenkins持续集成iOS项目
安装完成后会自动打开http://localhost:8080这个网址,如果没有自动打开可以手动打开。打开后如出现找不到服务器的情况,可以尝试打开 http://127.0.0.1:8080,两者是一样的。有些教程还有添加Xcode integration 、Keychains and Provisioning Profiles Plugin之类插件的步骤,我们不需要。因为我们是用xcode脚本构建,所以不需要安装任何插件。之后的步骤没有什么坑,这里不再赘述。
2、新建任务
1)点击新建任务
![](https://img.haomeiwen.com/i1381088/77cf886c0923f6d4.png)
2)选择“构建一个自由风格的软件项目”,点击确定
![](https://img.haomeiwen.com/i1381088/2f6b8289482016dd.png)
3)填写工程相关介绍
![](https://img.haomeiwen.com/i1381088/324a13c2b39d2de8.png)
4)源码管理
我选择SVN
![](https://img.haomeiwen.com/i1381088/fd79a4d40216ced1.png)
5)构建触发器
这部分后面再讲。我们先把手动构建的环境搭建成功,再来搞自动构建。
6)构建环境
通过xcodebuild脚本的方式构建,这里不用做任何设置。
7)构建
重点来了。
点击“添加构建步骤”,选择Execute shell。
![](https://img.haomeiwen.com/i1381088/9bab317729c91712.png)
项目中使用了CocoPods,添加这段代码:
#bin/bsah - l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd $WORKSPACE/Test
/usr/local/bin/pod update --verbose --no-repo-update
继续添加构建步骤:
![](https://img.haomeiwen.com/i1381088/c283abfa460a7159.png)
xcodebuild clean -workspace Test.xcworkspace \
-scheme Test \
xcodebuild archive -workspace Test.xcworkspace \
-scheme Test \
-archivePath "$WORKSPACE/Test.xcarchive" \
-configuration Debug \
xcodebuild -exportArchive -archivePath "$WORKSPACE/Test.xcarchive" \
-exportPath "$WORKSPACE/Export/Test" \
-exportOptionsPlist "$WORKSPACE/ExportOptions.plist" \
-configuration Debug \
fir publish "$WORKSPACE/Export/Test/Test.ipa" -T "d83355ce621b98d3b*****2ae9fa2"
说明:
-archivePath:.xcarchive文件的存放路径。
-exportPath:导出文件的路径。Export文件夹是自己建的。
-ExportOptions.plist:这个文件的内容其实是ipa的打包信息。手动archive并export时,这个文件就包含在最终输出的文件夹内,可以copy一份出来使用。
-configuration :默认Debug或Release。
这里有个坑要说明一下。archive和ipa的导出目录最好位于Jenkins用户下的那个工程中,我之前选择的是导出到当前用户的桌面,结果一直报读写权限的问题。
3、上传到fir
fir publish "$WORKSPACE/Export/Test/Test.ipa" -T "d83355ce621b98d3b*****2ae9fa2"
要实现自动上传到fir,要先安装fir-cli。
Github: fir-cli
fir token查看方法:
![](https://img.haomeiwen.com/i1381088/c3d1bd5cccaf0b18.png)
若过程出现:command not found:
1、控制台执行 echo $PATH ,复制输出内容。
2、jenkins->系统管理->系统设置。
3、勾选Environment variables,添加键值。键:PATH,值:刚才复制的内容。
![](https://img.haomeiwen.com/i1381088/782d0cbc968e6dc8.png)
4、配置自动触发器
Jenkins在自动化构建的过程中,更多的是充当监察者的作用。一旦监察到仓库中的内容有任何变化,就自动触发构建打包。
自动触发构建可参考这篇文章:Jenkins之定时构建
至此,Jenkins+xcodebuild+fir环境搭建完成。
共勉。