在Mac上配置Jenkins
直接从官网下载dmg安装包即可.
关于基础的配置看这篇就够了手把手教你利用Jenkins持续集成iOS项目
配置好后,同时在设置里打开远程登录就可以作为jenkins的slave节点了。
安装插件
Keychains and Provisioning Profiles Management 配置证书和描述文件
Post-Build Script Plug-in 执行脚本插件
Xcode integration xcode编译配置插件
部分插件找不到时,解决方法见 jenkins插件安装
尝试过升级站点后但还是找不到,后来在日本镜像http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/中找到并下载下.hpi文件重启jenkins后生效
添加Mac作为slave节点
安装ssh slaves plugin插件
在http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/上找到ssh slaves plugin插件下载.hpi文件并上传后重启jenkins即可
系统设置-》管理节点
slave 节点配置过程如下
Master创建job
在master创建job,指定在slave上执行。并配置编译时脚本,编译后脚本
在master上创建job,job任务的配置如下:
由于xcode有自动启动签名机制,因此只要我们在jenkins环境配置中正确添加了keychains和provisionning profiles等,无需设置这里的构建环境。把所有的编译打包工作交给shell脚本去做
构建脚本如下可以接在写在方框内
Jobname 表示jenkisn中的一个任务名称
AppName 表示App名称
#!/bin/sh
# 解锁对login.keychain的访问,codesign会用到
security unlock-keychain -p "password" $HOME/Library/Keychains/login.keychain
# 清除
xcodebuild clean
# 打包签名
xcodebuild -workspace /Users/Shared/Jenkins/Home/workspace/JobName/Appname.xcworkspace -scheme Appname -configuration Development archive -archivePath /Users/Shared/Jenkins/Home/workspace/Jobname/Appname -destination generic/platform=iOS
# 导出ipa
xcodebuild -exportArchive -archivePath /Users/Shared/Jenkins/Home/workspace/Jobname/Appname -exportPath /Users/Shared/Jenkins/Home/workspace/Jobname/Appname -exportOptionsPlist /Users/Shared/Jenkins/Home/workspace/PonyCarTest/exportOptions.plist
# 上传
curl -F "file=@/Users/Shared/Jenkins/Desktop/PonyCar/PonyCar.ipa" -F "uKey=蒲公英生成" -F "_api_key=蒲公英生成" https://qiniu-storage.pgyer.com/apiv1/app/upload
编译后发现其实,master会在slave节点主机上生成${jenkins安装目录}/workspace/Job名称,项目的代码都在这个目录下,在${jenkins安装目录}/下新增slave.jar文件,通过这个调起本地的jenkins.jar启动本地的服务,然后执行编译时脚本
将mac作为一个slave节点执行iOS的打包过程,主要是为了将iOS、Android的自动化打包集成到一个jenkins上去管理。当然你也可以不作为slave节点直接在本地打包编译项目。
命令行启动jenkins:
java -jar jenkins.war --httpPort=8888
localhost:8080/restart 重启
localhost:8080/exit 退出
localhost:8080/reload 重新加载
主要参考文章:
手把手教你利用Jenkins持续集成iOS项目
使用Jenkins搭建iOS/Android持续集成打包平台
Jenkins 构建 iOS 持续集成
iOS 通过Jenkins 自动构建ipa
Jenkins配置节点(解决Linux上iOS打包)