Jenkins+Github+Xcode+Fir CI实战

上一篇:iOS使用Jenkins进行持续集成详细的讲了Mac上面搭建jenkins,接下来将会详细介绍jenkins的实际应用案例。

配置build jenkins

  1. 进入jenkins主页登录成功后,选择(新建),输入item的名称,选择(构建一个自由风格的软件项目),填写必要的描述信息。
  2. 源码管理,我这里选择git(我的代码在git上面),(1)Repository URL填写项目的git地址 (2)Credentials选择add添加git的账号,(3)Branch to build 选择当前项目构建的分支。这样每次构建都会从git上拉取对应分支的最新代码到本地对应job的工作空间中。
  3. 构建触发器,选择触发的条件,我这里选择的是 Build when a change is pushed to GitHub,也就是只要有开发人员提交代码到对应的项目分支,就会立即打包操作。当然你也可以选择其它的条件 Poll SCM 日程表可以填写H/15 ,15分支检查一次是否有提交,如果有提交的就会自动打包。
  4. 选择增加构建步骤,里面有一些基本的构建步骤也包含自己当前所需要安装的插件,这里使用的xcode构建项目,当然你也可以自己写打包脚本或者通过fastlane 持续集成工具gym或者shengzhen进行打包操作。

    (1) General build settings (build的基本配置)

    1
    target:选择targets中当前项目需要对应的target

(2) Code signing & OS X keychain options (code sign及钥匙串keychain信息访问,主要是为了打包签名等使用)

1
2
3
4
5
6
7
Change bundle ID:勾选后,表示打包操作中需要更改当前对应info.plist文件中对应bundle id。主要方便企业版本,appstore版等不同的bundle id需要。
Code Signing Identify:也就是当前code sign的标示,(这个可以通过设置当前正确的code sign identify及code sign后,
通过xcode打包各环境成功后,表示这些配置是正确的),然后通过当前项目中.xcodeproj文件的包含内容查找对应的Code Signing
Identify
Embedded Profile:也就是打包的provision file文件,也可以通过上述方式在配置文件中找到。证书安装后的地址
/Users/tianww/Library/MobileDevice/Provisioning Profiles/中可以找到对应的证书,在这里填写正确即可。
Unlock Keychain:由于签名等需要访问钥匙串,所以这里要勾选上,填写钥匙串的地址,访问钥匙串的密码。

(3) Advanced Xcode build options (配置xcode build options)

1
2
3
4
Xcode Schema File:选择schema,填写当前需要执行的schema的名称。
Xcode Workspace File:如果当前的项目是基于workspace的那么这里就填写workspace(pod项目)的名称路径,不要. xcworkspace
Xcode Project Directory:如果当前的项目是基于Project的,那么这里填写Project的路径名称,不要.xcodeproj。
Build output directory:也就是项目的ipa的输出路径。

(4) Versioning

1
2
Marketing version:CFBundleShortVersionString
Technical version:CFBundleVersion

上传ipa文件

一.通过蒲公英Fir上传

1.通过Fir蒲公英上传ipa到账号,这里可以通过脚本,当然也可以通过使用安装fir提供的jenkins插件下载.hpi)配置上传ipa到fir。

以下使用脚本方式:你需要安装fir的命令fir.im-cli,安装fir.im-cli命令可以通过terminal的gem直接安装,参考

1
gem install fir-cli

2.选择添加构建步骤Execute shell,填写以下脚本:

1
2
3
4
5
6
7
8
9
#进入ipa生成的目录
${WORKSPACE}/Enterprise_ipa/
#登录fir这里的需要填写你的 API Token
fir login 858b83d2f15f5f
curDir=`pwd`
# 下面上传dsym文件到fir上面对应,这个需要在项目中集成fir的bughd错误日志收集,-p 表示项目的token -v当前的时间
#fir mapping /${WORKSPACE}/build/beibei.app.dSYM.zip -v `date "+%Y-%m-%d/%H:%M:%S"` -P 56528e39a1de52
#上传ipa文件,并且上传变更日志,这个是当前job的build的修改记录的地址
fir publish "beibei.ipa" -c "如需要查看修改记录点击下面地址....:http://192.168.44.132:8080/job/${JOB_NAME}/${BUILD_NUMBER}/changes"

3.如果你需要通过fir提供的jenkins插件上传到fir相关的,那就在构建步骤添加插件的名称,填写必要的配置信息。可以参考fir jenkins的各种参数配置

二.通过FTP上传到自己的服务器

1.在构建步骤中选择Send build artifacts over FTP前提是你安装了该jenkins插件,具体参考这里

问题

  1. jenkins 1.656版本会并且在由于xcode 7出来没多久,且在xcode 7上build setting中多了一个Product Bundle Idenitfier的项,且jenkins没有修改此处的bundle id,导致无法编译通过。所以为了避免这个问题我们可以在对应的configuration下面设置bundle id而不影响其它人,但同时也不允许其它人更改对应configuration的内容。这样限制就会比较麻烦,我们可以通过编写脚本修改bundle id,或者采用接下来的fastlane方式。新版本估计jenkins会将这个问题修复。

参考

1.Jenkins+GitHub+Xcode+fir搭了一个持续集成环境

2.fir.im Jenkins 插件使用方法

3.Jenkins Plugins这里有各种各样的插件

4.如果你觉得以上的配置内容不够详细,可以下载详细的配置信息Demohtml查看吧