jenkins+osx虚拟机+xcode实现自动打包
一、VMware安装osx系统
1、安装VMware 12,安装完成后关闭VMware,打开系统进程管理,进入服务管
理,关闭如下4个服务:
VMnetDHCP
VMUSBArbService
VMware NAT Service
VMwareHostd
2、下载unlocker206.zip 工具,解压后,找到unlocker206\win-install.cmd 以管
理员身份运行,直到运行命令窗口关闭。
3、成功完成步骤2后,VMware就可以识别和安装苹果osx系统了,如无法添加
osx系统虚拟机,请检查步骤1和2是否按要求完成。
4、打开VMware,新建虚拟机,选择需要安装的osx系统:
5、按步骤设定完成后,进入虚拟机设置页面,设置光驱读取的iso镜像路径(下
载完整的osx的iso镜像文件,如下载的是dmg文件,则可下载使用
“UltraISO软碟通V9.6.0.3000”将dmg文件转换为iso镜像文件):
6、开启虚拟机,如果出现如下报错:
.
则需找到所建立的虚拟机中的 XXXX.vmx 文件(XXXX代表你建立的虚拟机名称)如下图:
,使用记事本打开后,在 smc.present = "TRUE" 后添加“smc.version = 0”(建议您复制,不包括引号)后保存,问题即可解决。然后重启虚拟机即可。
7、运行安装后,按如下步骤安装osx:
抹掉成功后,然后点击左上角的磁盘工具,选择退出磁盘工具。然后在安装界面点击继续,再点击安装,,,,静待佳音,以后就是初次进入系统的配置了。
8、系统安装完成后,配置网络为桥接,设置mac的网络为DHCP自动获取,然后
通过AppStore下载安装xcode(如果提示系统版本过低,则需先升级系统版
本),安装完成后再安装jdk1.8(jenkins的slave节点机要求安装1.8版本)
9、打开mac的系统偏好设定---- 共享,选择“远程登录”,允许访问栏选择“仅
这些用户”,添加当前登录的用户到允许列表中。
10、Git生成秘钥,打开终端,输入命令 ssh-keygen -t rsa ,后续全按回车,成功
生成秘钥。打开xcode,同时按下“Windows”+ “,”两个键打开git秘钥配对。
在弹出的配对框中,点击+号,选择添加“Add Repository…”,选择git 和秘
钥的私钥。点击保存完成mac系统秘钥配对设置。
完成mac的配置后需登录gitlab,进入你的账号的如下页面
点击添加公钥,在下面输入你mac上生成的公钥,可打开终端,
cd 到home目录,然后 cd到 .ssh目录下,用vi打开 rsa_id.pub,复制全部内
容输入到gitlab,点击保存即可完成git通信配置。
11、安装xcode编译证书(该步骤请ios开发同事帮忙),安装完成后使用命令行
xcodebuild编译验证是否配置正确。
12、登陆Jenkins,点击下图红圈按钮进入节点添加:
下面是节点配置:
注意事项:
A、填写正确mac虚拟机ip 和已建立好的作为工作空间的文件夹路径
B、选择启动方法,推荐选择Launch slave agents on Unix machines via SSH
C、设定登陆认证Credentials:点击,进入认证添加页面,
选择Username with password,然后输入mac虚拟机中你添加到远程登陆的用户名和密码。点击ADD完成添加,然后在Credentials后的选择框中选择你刚添加的认证。
完成以上步骤后点击保存,完成Jenkins的节点添加。
13、节点添加完成后,需关闭虚拟机和其所在物理机防火墙,或添加22端口的入
站出站规则。然后连接节点完成Jenkins与mac虚拟机的通信。
14、配置xcode构建项目:按图操作
点击新建,进入项目新建页面
输入项目名称,选择“构建一个自由风格的软件项目”,点击“ok”进入详细配置页面:
A:配置概要信息
注意图中最后一个红圈部分,一定要添加正确,勾选后,填写你配置连接好的mac节点名称,否则Jenkins无法实现远程构建。
B:源码管理设定
注意输入正确的git源码库的URL,和gitlab浏览器浏览的URL,以及版本。
C:构建触发器
此处配置构建触发机制,当前选择的是轮询git库触发构建(@hourly表示轮询
间隔为1小时)
也可配置远程URL触发,自定义URL,远程登录该URL即可触发构建。
D、构建设定
点击添加构建步骤,选择“xcode”,注意选择前需先安装Xcode integration
插件,如未安装可进入Jenkins的系统管理—插件管理中搜索安装该插件。
选择xcode后进行配置构建信息:
先是基础设定:
?Target:就是我们在项目中建立的Target如果不清楚有哪些Target的情况下可以到xcodeproj或xcworkspace的目录下运行如下命令
xcodebuild -list即可看到Targets,其中是所有可以用的target。
?Clean before build?:这个是在编译前是否clean一次,一般是选择YES。
?Configuration: 对应的是xcodebuild命令里的-configuration的参数,可选项为[Debug、Release],一般都填Debug,这样就可以将打包后的
ipa交付给测试人员测试
?Pack application and build .ipa?:这个是在结束是是否要产生对应的ipa文件,我们此处不勾选,通过shell命令实现。
再是签名设置:
如果不知道具体填什么可以到钥匙串访问中寻找 iPhone Distribution:开头
的所使用的证书,然后选中后点击右键选择显示简介,在弹出的窗口中找到常
用名称,将其复制填入即可。注意下面几个参数:
?Unlock Keychain?: Jenkins需要访问Keychain,获取响应的key,所以需要授权。选上就自动解锁。需要提供密码。
?Keychain path: 默认都是${HOME}/Library/Keychains/login.keychain ?Keychain password: 钥匙串的密码
然后是Advanced Xcode build options(xcodebuild命令的配置)
因当前项目是按工作空间编译打包,所以必须配置的是(注意,进入如下配置前,需先保存构建项目并运行一次,因为mac虚拟机上当前的代码还未通过Jenkins下载下来,所以无法找到要编译的代码)
⑴Xcode Schema File :该参数通过在工程目录下执行 xcodebuild –list 查看
Schema字段查找。(使用工作空间打包时,该选项必填,否则无法编译打包)
⑵Xcode Workspace File:输入mac虚拟机上需编译的工作空间中 *. Workspace的文件路径,注意不能携带该文件的扩展名 . Workspace。
如是按项目编译则需配置
Xcode Project Directory和Xcode Project File,注意这两项也是配对出现的,必须同时配置。
E、将app签出为ipa包:
构建完成后生成的是app包,需使用shell命令签出为ipa包,命令如下:xcrun -sdk iphoneos PackageApplication -v */WenWenJewel.app -o
*/wenwen_debug.ipa
注意其中 * 号代表的是Jenkins生成的app包的保存路径,该值需先运行一次构建并编译成功后通过日志取得。
F、将生成的ipa包进行处理,将老的ipa包备份,将新的ipa包发送到存储服务器。参考命令如下:
bakdate=`date '+%Y%m%d%H%M%S'`
echo $bakdate
ssh aiproxy@120.25.196.51 "mv sftp/ios/wenwen_debug.ipa
sftp/ios/his/wenwen_debug.ipa.$bakdate"
scp /Users/wenwen/Library/Developer/Xcode/DerivedData/WenWenJewel-hkezjvjdiojeeqfamltancfhslkk/Build/Products/Debug-
iphoneos/wenwen_debug.ipa
aiproxy@120.25.196.51:/app/aiproxy/sftp/ios
G、发布到fir.im:先下载插件:
https://www.wendangku.net/doc/597894203.html,/fir-plugin-0629.hpi
然后再Jenkins中添加插件系统管理---插件管理进入如下页面:
找到刚下载的插件上传即可完成安装。然后添加构建后步骤:
配置如下:
Fir.im Token :登陆fir,点击
获取token复制就行
IPA/APK Files (optional):你要上传的ipa存放目录,如果是默认打包,可以不填。
H、添加构建后操作的邮件提醒,输入需要提醒的邮箱。