写在尝试之前

其实之前尝试过jenkins实现android打包,但是对iOS打包有各种环境问题依赖,但是现在需要实现iOS自动化打包,为了方便内部分发测试,依然jenkins实现。


1、实施步骤——安装Jenkins

安装jenkins在mac环境很简单,直接brew install jenkins
安装好以后,在终端输入:jenkins,就启动了jenkins
在浏览器输入http://127.0.0.1:8080,可以看到jenkins的主界面

2、实施步骤——安装插件

jenkins==>系统管理==>管理插件内安装插件:

  • Git Plugin
  • Git changelog Plugin
  • xcode integration

3、实施步骤——创建Job

笔者创建了一个自由风格的项目


下面进入重中之重
由于公司使用的是Git管理源码,因而在源码管理处,选择Git,如图所示
Git源码管理
需要填的有
Repositories,Credentials,Branches to build,Additional Behaviours
注意Additonal Behaviours选择Advanced clone behaviours,
然后勾选Shallow clone(不下载历史版本)
Credentials填写的时候,有的童鞋可能会遇到私钥,公钥的问题,如果对git不是特别理解的话,会不知道怎么填。
这里有个简单的办法,你先需要确保,在终端命令行,你可以执行,git clone命令,可以clone源码到本地,如何能做到这个条件?
按照这个链接操作Mac下git通过SSH生成钥匙
已经能做到的,直接cd到本地.ssh,可以看到id_rsa,id_rsa.pub,known_hosts,打开id_rsa复制。其他步骤则如图所示:
Git私钥处理
填好之后,保存,然后Credentials选择刚才命名的记录。
这个时候代表已经填好了Repositories,Branches to build,Additional Behaviours,然后立即保存,然后点击立即构建,确认可以构建成功,下载源码到/jenkins/workplace

4、实施步骤——构建打包

一直尝试用jenkins自带的xcode打包,发现总是出错,报证书的问题,报profile找不到的问题,实在没办法了,试图通过命令行实现。
用 Xcode 打包的步骤是
(1).Product - Clean ,对应脚本中 xcodebuild clean 命令

1
xcodebuild clean -project ./Demo.xcodeproj -configuration Release

(2).Product - Archive,对应 xcodebuild archive 命令

1
2
3
xcodebuild archive -workspace ./Demo.xcworkspace -scheme Demo -archivePath
Demo.xcarchive CODE_SIGN_IDENTITY="xxx"
PROVISIONING_PROFILE="xxx"

(3). Export ,对应xcodebuild -exportArchive

1
2
xcodebuild -exportArchive -archivePath Demo.xcarchive -exportPath Demo.ipa
-exportOptionsPlist exportOptions.plist

  • Scheme 参数对应 Xcode 中的 Product - Scheme ,在项目目录执行xcodebuild -list命令也可以查看
  • 勾选了 Shared 的 Scheme 会保存在 .xcodeproj/ 目录下的文件里,才会被版本控制系统记录,如果一个 Shared Scheme 也没有,打包命令不会自己结束,也不会报错。
  • CODE_SIGN_IDENTITY 参数填证书名,可以在 OS X 系统的钥匙串应用里查看
    钥匙串里,证书可能在登录级也可能在系统级,如果在“登录”中,其他 OS X 用户(比如java -jar jenkins.war启动的 Jenkins)执行命令时需要输入密码,把证书移到“系统”里就不用输密码了,也可以用 security unlock-keychai 命令解锁,也可以修改证书的信任设置
  • PROVISIONING_PROFILE 参数,在 Xcode - Preference - Accounts - View Details 找到对应的 Provisioning Profiles ,右键 Show in Finder,会看到一个 ~/Library/MobileDevice/Provisioning Profiles/97824172-beb3-4674-a266-13f57242277f.mobileprovision 文件,参数填文件名(不包含扩展名)
  • exportOptions.plist 文件按下面的格式写,用xcodebuild -help命令看键值对的说明
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <plist version="1.0">
    <dict>
    <key>teamID</key>
    <string>xxxx</string>
    <key>method</key>
    <string>xxxx</string>
    </dict>
    </plist>

5、打包完成,安装

打包完成之后,需要安装到手机,目前我所知有三种方式:
(1).使用jenkins插件
https://wiki.jenkins-ci.org/display/JENKINS/iOS+Device+Connector+Plugin
(2).使用ideviceinstaller
安装方法也很简单 brew install imobiledevice 之后安装ipa的话就直接用 ideviceinstall –udid ${UDID} –install your.ipa
(3).使用ios-deploy
安装方法 npm i -g ios-deploy 然后 ios-deploy -b your.ipa

至此完成,jenkins持续打包和安装,下面就需要完成自动化回归测试了。。。。