jenkins整合Xcode详解

简介:

关于Jenkins整合XCode最开始的配置项就行述说了。这里主要是针对XCode的配置项进行详细的叙述,帮助小伙伴们快速整合XCode进行编译和打包。
整合结果

首先关于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(签名的设置)


* 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里面的参数的配置:
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等产生文件的位置),其中该目录其实是包括了CONFIGURATION_BUILD_DIR和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、CONFIGURATION_BUILD_DIR以及SYMROOT三个路径之间的关系大家可以去查看官方的文档。

相关文章
|
6月前
|
jenkins Unix 持续交付
个人记录jenkins编译ios过程 xcode是9.4.1
个人记录jenkins编译ios过程 xcode是9.4.1
100 2
|
6月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
3月前
|
iOS开发 MacOS Perl
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
147 4
|
3月前
|
iOS开发 开发者
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
271 3
|
3月前
|
缓存 iOS开发
如何在Xcode删除某个版本的IOS模拟器
如何在Xcode删除某个版本的IOS模拟器
604 1
|
3月前
|
iOS开发
mac不通过Xcode直接打开IOS模拟器
mac不通过Xcode直接打开IOS模拟器
235 2
|
5月前
|
iOS开发
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
58 1
|
6月前
|
存储 定位技术 iOS开发
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
108 0
|
6月前
|
Linux 数据安全/隐私保护 iOS开发
Xcode8.1如何支持iOS8.0以下版本
Xcode8.1如何支持iOS8.0以下版本
46 0
|
iOS开发
iOS Xcode 意外退出 打不开工程
iOS Xcode 意外退出 打不开工程
169 0
下一篇
无影云桌面