搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)

最近处于项目测试阶段,频繁的打包耽误了团队很多时间,所以抽出时间来搭建自动化打包平台,实现对iOS和Android项目的打包。而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等人员)通过手机扫描二维码后就能直接安装测试包。


现在主要使用Jenkins工具进行平台的搭建,Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

根据官方定义,Jenkins有以下的用途:

  1. 构建项目
  2. 跑测试用例检测bug
  3. 静态代码检测
  4. 部署

关于这4点,实际使用中还是比较方便的: 

1.构建项目自动化打包可以省去开发人员好多时间,重要的是,Jenkins为我们维护了一套高质量可用的代码,而且保证了一个纯净的环境。我们经常会出现由于本地配置出错而导致打包失败的情况。现在Jenkins就是一个公平的评判者,它无法正确的编译出ipa,那就是有编译错误或者配置问题。开发人员没必要去争论本地是可以运行的,拉取了谁谁谁的代码以后就不能运行了。共同维护Jenkins的正常编译,因为Jenkins的编译环境比我们本地简单的多,它是最纯净无污染的编译环境。开发者就只用专注于编码。这是给开发者带来的便利。

2.这个可以用来自动化测试。在本地生成大批的测试用例。每天利用服务器不断的跑这些用例。每天每个接口都跑一遍。看上去没必要,但是实际上今天运行正常的系统,很可能由于今天的代码改动,明天就出现问题了。有了Jenkins可以以天为单位的进行回归测试,代码只要有改动,Jenkins就把所有的回归测试的用例全部都跑一遍。在项目工期紧张的情况下,很多情况测试都不是很重视回归测试,毕竟很可能测一遍之后是徒劳的“无用功”。然而由于回归测试不及时,就导致到最后发版的时候系统不可用了,这时候回头查找原因是比较耗时的,查看提交记录,看到上百条提交记录,排查起来也是头疼的事情。以天为单位的回归测试能立即发现问题。测试人员每天可以专注按单元测试,一周手动一次回归测试。这是给测试者带来的便利。

3.这个是静态代码分析,可以检测出很多代码的问题,比如潜在的内存泄露的问题。由于Jenkins所在环境的纯净,还是可以发现一些我们本地复杂环境无法发现的问题,进一步的提高代码质量。这是给质检带来的便利。

4.随时部署。Jenkins在打包完成之后可以设定之后的操作,这个时候往往就是提交app到跑测试用例的系统,或者部署到内测平台生成二维码。部署中不能安装等一些低级问题随之立即暴露。测试人员也只需要扫一下二维码即可安装,很方便。这也算是给测试带来的便利。


现在我们来开始安装Jenkins。从官网https://jenkins.io/ 上下载最新的pkg安装包。

但是,这个时候直接安装是装不上的,Jenkins依赖于Java运行环境,因此需要首先安装Java的SDK(下载地址)。


下载上图中JAVA的SDK,并安装。安装完成后,打开终端,cd进入到jenkins.war包所在目录,执行以下命令:

java -jar jenkins.war --httpPort=8080

httpPort指的就是Jenkins所使用的http端口,这里指定8080(默认的就是这个),可根据具体情况来修改。待Jenkins启动后,在浏览器页面输入以下地址:

http://localhost:8080

这样就打开Jenkins管理页面了。这个时候Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 会出现下图的重设初始密码的界面。

按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。

打开initialAdminPassword文件,复制出密码,就可以填到网页上去重置密码了。如下图



一路安装过来,输入用户名,密码,邮件这些,就算安装完成了。


Jenkins安装完成之后,需要安装一些插件。

安装GitLab插件 

因为我们用的是GitLab来管理源代码,Jenkins本身并没有自带GitLab插件,所以我们需要依次选择 系统管理->管理插件,在“可选插件”中选中“GitLab Plugin”和“Gitlab Hook Plugin”这两项,然后安装。


安装Xcode插件
同安装GitLab插件的步骤一样,我们依次选择系统管理->管理插件,在“可选插件”中选中“Xcode integration”安装。

安装签名证书管理插件
iOS打包内测版时,需要发布证书及相关签名文件,因此这两个插件对于管理iOS证书非常方便。还是在系统管理->管理插件,在“可选插件”中选中“Credentials Plugin”和“Keychains and Provisioning Profiles Management”安装。

安装脚本插件
这个插件的功能主要是用于在build后执行相关脚本。在系统管理->管理插件,在“可选插件”中选中“Post-Build Script Plug-in”安装。


安装完了插件,我们就可以配置一个构建项目了。

选择第一个 “构建一个自由风格的软件项目” 

这里可以设置包的保留天数还有个数。

接着设置源码管理


因为我们项目是用SVN管理的,所以这里选择Subversion。图中Repository URL为SVN的访问地址。Credentials为你的SVN账户,第一次肯定没有账户,之后点击Add会出现下图,填写自己的SVN账号即可。



构建环境设置


上图中的这些选项是iOS打包需要的签名文件和证书。如果没有的话,需要进入Keychains and Provisioning Profiles Management页面添加,点击“浏览”按钮,分别上传自己的keychain和证书。上传成功后,我们再为keychain指明签名文件的名称。点击“Add Code Signing Identity”,最后添加成功后如下图所示:

注意:我第一次导入证书和Provisioning Profiles文件,就遇到了一点小“坑”,我当时以为是需要证书,但是这里需要的Keychain,并不是cer证书文件。这个Keychain其实在/Users/管理员用户名/Library/keychains/login.keychain,当把这个Keychain设置好了之后,Jenkins会把这个Keychain拷贝到/Users/Shared/Jenkins/Library/keychains这里,(Library是隐藏文件)。Provisioning Profiles文件也直接拷贝到/Users/Shared/Jenkins/Library/MobileDevice文件目录下。

这样Adhoc证书和签名文件就在Jenkins中配置好了,接下来我们只需要在item设置中指定相关文件即可。 回到我们新建的item,找到构建环境,按下图选好自己的相关证书和签名文件。

构建

构建的方式有编写脚本和Xcode两种常用方式。编写脚本的话会更加灵活,但是脚本写起来比较麻烦。这里我选择用Xcode的方式进行构建。 




依次填写你的

1.工程 Target名(一般为工程名)。

2.打包方式一般为 Release 

3.打包完成的ipa名称

4.ipa文件存放路径

继续设置


/Users/管理员用户名/Library/keychains/login.keychain,的keychain记住直接找到文件拖到文本框内,不然有可能失效


我打码的部分一般填你的工程名就可以,或者schema分支名字,然后点击保存就可以了。


至此,我们的Jenkins设置就全部完成了。点击构建,就会开始构建项目了。

构建一次,各个颜色代表的意义如下: 

天气的晴雨表代表了项目的质量,这也是Jenkins的一个特色。 

如果构建失败了,可以去查看Console Output可以查看log日志。 


打包完成自动化上传 fir / 蒲公英 第三方平台

要上传到 fir / 蒲公英 第三方平台,都需要注册一个账号,获得token,之后才能进行脚本化操作。

1. 自动化上传fir

安装fir-clifir的命令行工具 需要先装好ruby再执行

gem install fir-cli
#上传到fir
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
2.自动化上传蒲公英
#蒲公英上的User Key
uKey="7381f97070*****c01fae439fb8b24e"
#蒲公英上的API Key
apiKey="0b27b5c145*****718508f2ad0409ef4"
#要上传的ipa文件路径
IPA_PATH=$(cat text.txt)

rm -rf text.txt

#执行上传至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload




参考博客:https://gold.xitu.io/post/57b01d50128fe10055bbc6d5


发布了90 篇原创文章 · 获赞 94 · 访问量 30万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览