Linux下jenkins实现 IOS APP自动化打包
ios打包文件,如果是在mac上安装jenkins,比较简单,不赘述
本文主要叙述在Linux上部署的jenkins如何编译ios项目
一、设置MacOS节点
首先选择一台mac电脑,将其ip,登录这台mac 的账号密码找到
设置节点前先用ping命令测试下是否能连通这台机器
进入mac终端,打开ssh服务
查看ssh服务状态
sudo systemsetup -getremotelogin
如果已经开启的话,指令会显示 “Remote Login: On” ,反之就会显示“Remote Login: Off”。
开启ssh服务:sudo systemsetup -setremotelogin on
关闭ssh服务:sudo systemsetup -setremotelogin off
在mac上安装jdk,jdk自己下,或者去官网下,官网需要登录才可以下载
参考:https://www.jianshu.com/p/a85658902f26
进入我们Linux的jenkins,选择系统管理,节点管理,新建节点
将信息填入,并发构建数一般不超过5
工作目录自己选择一个,一定要有
用法选择只允许绑定到这台机器的job
启动方式选择 Launch…SSH
主机填ip
然后下一行,点击添加,将登录mac的账号密码填入,然后保存,选择这个账号密码即可
Host Key Verification Strategy 选择Non … Strategy
可用性选择尽量保持代理在线
保存即可
然后回到节点这里,就会出现mac节点了
二、在jenkins上开始构建ios项目
找到ios开发人员,拿到ios相关证书,才可以在mac上进行ios项目编译,具体使用找自己ios开发
接下来构建新建一个ios项目,选择*风格
选择运行节点,选择我们刚刚创建的节点mac
svn或者GitHub选择代码,统一需要相关账号密码
找到构建,选择执行shell,写入:
上面编译肯定是不通过的,因为你缺少两个文件app-store.plist和ad-hoc.plist。这个你自己其实能找到,那就是在xcode里打包并Export出来的文件夹里,都会有一个ExportOptions.plist文件
根据你在Export时选择的是App Store 还是 Ad Hoc,分别复制进项目exportOptions/app-store.plist
和exportOptions/ad-hoc.plist
复制进去之后然后保存,再进行编译,即可在mac节点工作目录上看到已经打包好的ipa包,可以顺利安装在Apple设备上。
参考:
https://zhuanlan.zhihu.com/p/41756945
https://testerhome.com/topics/3033
http://liumh.com/2015/11/25/ios-auto-archive-ipa/
附上执行的shell脚本:
#!/bin/bash
#这句是解密mac登录,jenkins在mac没有账号密码,所以需要这个,不然报错
security unlock-keychain -p “foscam” ~/Library/Keychains/login.keychain
#必须先创建目录
mkdir -p build
rm -rf build/archive.xcarchive build/ipa-*
#获取目录名
project_list=ls | grep .xcodeproj
project_name=${project_list%%.*}
#打包出app
#这和你点击 xcode -> Product -> Archive 是一样的效果的。
xcodebuild clean
xcodebuild archive
-project ./${project_name}.xcodeproj
-scheme ${project_name}
-configuration Release
-archivePath ./build/archive.xcarchive
#上面一步仅仅打包出了一个.xcarchive,下面这步则生成一个.ipa
xcodebuild -exportArchive
-archivePath ./build/archive.xcarchive
-exportPath ./build/ipa-ad-hoc
-exportOptionsPlist /jenkins_URL/workspace/exportOptions/ad-hoc.plist
-allowProvisioningUpdates