部署jenknis实现iOS自动化打包
1、jenknis
当项目越来越多,时不时还要回归测试一下,如果一直由开发人员打包的话,实在是太降低效率了,所以自动化打包必不可少。
在自动化打包中,我选择了Jenkins,主要是因为他免费,而且可以由测试自行打包(只要我们事先配置好分支、项目名、代码地址等参数就好)。
2、环境介绍
因为希望打包任务能够长存,所以我选择将jenkins部署在一台linux服务器上面,然后将一台安装了Xcode的Mac作为其一个节点。
3、安装步骤
<1>、从 jenknis官网下载war安装包。
<2>、 将jenkins.war安装包上传到服务器上
//root@192.168.XXX.XXX:/root/ 为你的服务器路径,根据情况自行填写
scp /Users/ychen3022/Downloads/jenkins.war root@192.168.XXX.XXX:/root/
<3>、 登录到linux服务器,并安装Jenkins
//登录到远程linux服务器
ssh root@192.168.XXX.XXX
使用ls命令查看是否有jenkins文件
jenkins文件
在war 包所在目录,执行以下命令:
java -jar jenkins.war --httpPort=8080
//想要保持后台进程运行的话,在前面加上nohup,这样关闭终端,也能继续运行
nohup java -jar jenkins.war --httpPort=8080
<4>、 在浏览器页面输入以下地址:
http://92.168.XXX.XXX:8080
这样就打开Jenkins管理页面了。
尽量使用推荐默认配置,按照页面安装流程,直到完成。
jenkins安装完成
<5>、 配置Mac电脑为jenkins的节点:系统管理->节点管理->New Node
配置节点信息
点save按钮后
配置节点后
点击“ agent.jar ”将下载一个agent.jar文件至本地
在agent.jar所在文件夹下,运行以下上图中的java -jar ...
//先cd到agent.jar所在文件夹
java -jar agent.jar -jnlpUrl http://192.168.100.185:8080/computer/ychen3022/slave-agent.jnlp -secret 0117dffc9e5227dfff6d69087e9d52913b2e5206b9ba605155d76fc01e7084d2
执行完毕,命令行会打印出日志信息
再刷新jenkins的管理页面,会发现ychen3022节点已经连接上。
ychen3022节点连接成功
<7>、jenkins就部署完成了,只需要我们配置项目的打包信息就可以了。
屏幕快照 2019-04-12 下午1.27.25.pngGeneral主要配置一些项目说明,或者设置一些全局变量,比如项目名、环境scheme、分支等;
Source Code Management主要配置代码地址信息、分支信息;
Build中配置一些打包脚本:
//在项目所在文件目录下执行下列操作
//这里需要补充的一点操作就是:
//我们需要在创建一个目录,存放一个plist文件,plist文件中对应method和teamID两项信息
//如下面的/Users/ychen3022/xcode_build/maanshanax@163.com_build_development.plist
rm -rf build/
security unlock-keychain -p {电脑管理者登录密码} /Users/ychen3022/Library/Keychains/login.keychain
//app_name是在上面设置的变量,指代项目名字
xcodebuild clean -workspace "./${app_name}.xcworkspace" -scheme "${app_name}" -configuration Dev -archivePath build/${app_name}.xcarchive archive -allowProvisioningUpdates
xcodebuild clean -exportArchive -archivePath build/${app_name}.xcarchive -exportPath build -exportOptionsPlist /Users/ychen3022/xcode_build/maanshanax@163.com_build_development.plist -allowProvisioningUpdates
//将打出来的ipa上传到服务器,后期再写网页生成对应的二维码,测试可以通过扫描二维码来安装ipa包
infoPlist="${app_name}/Info.plist"
version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $infoPlist`
branch=$(echo ${GIT_BRANCH}|cut -d '/' -f 2)
echo $branch
scp build/${app_name}.ipa root@192.168.XXX.XXX:/home/apkdownload/dev/btxy/${env_name}-${app_name}-v${version}.ipa
配置好打包脚本就可以进行打包了。
<8>、完善
按照上面的步骤,我们可以完成打包任务,但是当电脑关机后,必须得重新运行第<5>步的后半部分工作,才能进行打包,而且终端也不能关闭。
那我们可以尝试写个脚本,让电脑开机便执行命令,使jenkins节点保活。
这样关机或者关闭终端都不会影响打包任务。
以下参考:XW_学文的Mac OS开机启动自动执行命令行
新建一个文件夹jenkinsStart,将agent.jar文件拖进来,然后新建一个jenkinsStart.sh脚本文件。
cd /Users/ychen3022/jenkinsStart
nohup java -jar agent.jar -jnlpUrl http://192.168.XXX.XXX:8080/computer/ychen3022/slave-agent.jnlp -secret 896f7c5b5eec88f30d58e53b534327e71a520a68d19ce9534f132f74385df309
在该文件夹下执行
$ chmod 777 jenkinsStart.sh
有了权限之后,右键文件,选择“显示简介”,将打开方式选择为终端打开:
设置jenkinsStart文件属性
然后添加成开机自启动,(在设置->用户与群组->登录项)的登录项中添加启动文件。
这样就完成了我们的jenkins部署啦。