in XCode Jenkins ~ read.

Jenkins整合XCode详解

该文章主要是针对Jenkin配置完成并且希望通过Jenkins来进行集成XCode的童鞋。至于如何安装Jenkins大家可以通过百度谷歌一下会有很资料的,这里就不进行叙述了。

Jenkins整合XCode

关于Jenkins整合XCode最开始的配置项就行述说了。这里主要是针对XCode的配置项进行详细的叙述,帮助小伙伴们快速整合XCode进行编译和打包。先上一个结果的图,没图说个JB(不对,我是一个小清新,不能这么说话!) 整合结果

首先关于xcodeprojxcworkspace

由于我们是多人开发而为了解决xcworkspacexcodeproj多人开发会导致冲突的情况,我们在上传到SVN(或Git)都是不上传这两个后缀名的文件。(不知道小伙伴们关于这个冲突的问题是怎么解决的,如果有什么更好的方法麻烦通过发邮件告诉我。) 所以在我Jenkins的构建项中第一个就是一个Shell脚本,目的是将配置项拷贝到Jenkins的目录下: 构建项

然后就开始了XCode的配置

1.General Build Setting

General Build Setting

  • 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文件,一般都是打上勾的
  • .ipa filename pattern:这个配置项是配置所产生ipa的文件名,其中有一些可用的全局变量
其中${VERSION}和${SVN_REVISION}都是可以直接用的环境变量,如果想看还有哪些环境变量而已用可以点击在Execute shell下方有个 "See the list of available environment variables"进行查看,这里就不进行列出来了。
  • Output directory:这个配置了ipa的输出目录(默认Build output directory所在路径,见下图)

2.Code signing & OS X keychain options(签名的设置)

Code signing & OS X keychain options * Codee Signing Identity:所使用的签名

如果不知道具体填什么可以到钥匙串访问中寻找 iPhone Distribution:开头的所使用的证书,然后选中后点击右键选择显示简介,在弹出的窗口中找到常用名称,将其复制填入即可。
或者可以在命令行中输入security find-identity -p codesigning -v来查找iPhone Distribution:开头的签名即可,找到后将双引号中的内容复制。
  • Unlock Keychain?: Jenkins需要访问Keychain,获取响应的key,所以需要授权。选上就自动解锁。需要提供密码。
  • Keychain path: 默认都是${HOME}/Library/Keychains/login.keychain
  • Keychain password: 钥匙串的密码

3. Advanced Xcode build options(xcodebuild命令的配置)

如果熟悉xcodebuild命令的童鞋这个是应该心里应该偷笑了。因为这部分的配置都是xcodebuild里面的参数的配置。如果不懂的童鞋就且听我细细道来: Advanced Xcode build options

  • Clean test report?:这个是如果要用到xcode测试的时候才用到,意思就跟英语一样
  • Xcode Scheme File: 关于这个其实对应的就是xcodebuild命令中的-scheme的参数
如果您不知道要填写什么的话,如果是妹子的话欢迎打电话给我,汉子的话洗干净菊花再说。(开玩笑的)
可以通过xcodebuild -list来查询。是不是觉得这条命令很熟悉,没错前面查找target的时候也是用这个命令!
  • SDK:这里是xcodebuild命令中的-sdk的参数,指定编译和打包的sdk号。如果不懂可以填写哪些可以通过xcodebuild -showsdks来查看。
  • SYMROOT:该变量是编译和打包产生结果的输出目录(.a,.zip,.ipa,.hmap等产生文件的位置),其中该目录其实是包括了CONFIGURATIONBUILDDIR和OBJROOT这两个目录,默认的路径是所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录
如果在指定了OBJROOT的位置后,编译过程中产生的文件不会在该目录体现
如果在指定CONFIGURATION_BUILD_DIR的位置后,该变量则变成无效化
  • Custom xcodebuild arguments:这个就是xcodebuild命令中的指定buildsetting的命令的参数,至于可以指定哪些参数请不要问我,可以找度娘或者谷哥
  • Xcode Workspace File:该配置是指明了xcodebuild中的-workspace的变量,其实就是如果您需要编译打包一个workspace时候的时候指定那个后缀名为xcworkspace的文件,如果指定了该配置,那么Xcode project file配置项将无效
  • Xcode Project Directory:该目录是指明了包含xcodeproj文件的目录(这个我是没用用到如果用了该参数可能最开始第一步的构建就没用了------不过我还没证实,欢迎小伙伴证实后告诉我)
  • Xcode Project File: 如果需要构建一个project而不是一个workspace的话则指定文件的名称(后缀名为xcodeproj的文件)
  • Build output directory:该参数只是指明了最终需要产生的动态包,ipa,app等文件默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录(编译产生的相关文件所在目录,默认为$SYMROOT/$CONFIGURATION)

  • 值得说的是有一个参数也是挺常用的就是OBJROOT,该参数是产生.a和.hmap文件的目录,默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录,关于OBJROOT、CONFIGURATIONBUILDDIR以及SYMROOT三个路径之间的关系大家可以去查看官方的文档。

到此为止关于Jenkins整合Xcode的配置项差不多就说好了。那么可以稍微构建一下项目试试了,构建完项目后,你就会发现测试人员不需要天天来烦你,再也不需要听到“开发狗,赶紧给我安装一个最新的版本”了。

最后其实还整合单元测试让jenkins去做

关于如何整合可以看我的另一篇博文如何让jenkins成为单元测试的奴隶--xctool,整合好之后就可以让jenkins自动做单元测试,而我们可以看界面来看到是否测试通过。

comments powered by Disqus