Jenkins+SVN+fir.im+BugHD搭建持续集成,实
由于公司负责产品过多,因此有很多APP要管理、打包、测试和发布,因此每周有很多时间浪费在这些事情上面;产品🐶总是天天跟在屁股后面要版本,测试员要改bug和打包,每天都要跟他们唇枪舌战上半天;实在没办法了,才想起我之前一直想搞的持续集成,尽量实现代码管理、打包、发布和测试的自动化;虽然还有很多的路要走,但是先慢慢一点一点实现。
本文概要:
1.Jenkins环境的搭建和工程创建及配置;
2.fir.im自动发布;
3.BugHD实现Crash监测;
Jenkins环境的搭建和工程创建及配置
1.Jenkins环境的搭建
Jenkins是基于Java开发的工具,因此要使用Jenkins必须要安装JDK,可以在终端输入“java -version”来查看是否支持Java环境,如果没有版本信息则请下载安装,JDK安装地址;
Jenkins的安装有两种方式:
(1).官网下载安装包安装;
(2).Homebrew方式安装;
(1).官网下载安装包安装
在Jenkins官网地址下载安装包,一直继续即可,没什么特别注意的;
安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080;
第一次打开jenkins,会提示在指定地址获取初始密钥来解锁,到指定地址获取一串字符输入进去就好,由于没有权限,可以使用终端cd进去,然后用cat指令查看;
然后是安装默认插件,
安装默认插件.png
插件安装进度指示;
插件安装进度指示.png
接着输入用户名和密码就OK了,
账号界面.png
进入主界面,至此我们就完成了安装包方式对Jenkins的安装及账号配置,随后需要对其进行一系列的工程配置;
主界面.png
(2).Homebrew方式安装
通过终端输入“brew --version”查看是否安装过Homebrew,如果没安装过请参考Mac下使用国内镜像安装Homebrew这篇文章;
在终端输入安装命令:
$ brew install jenkins
输入启动命令:
$ jenkins
看到这一段, 记事本保存密钥备用
Please use the following password to proceed to installation:
------------------------------(密钥)
然后就是跟刚才类似的过程:
浏览器访问 http://localhost:8080
在解锁页面输入刚才记录的密钥,接下来请参考如上的安装包方式的流程;
2.工程创建及配置
接下来就开始在Jenkins中安装插件及创建和配置工程。
在主页面选择系统管理,
主页面.png
然后选择管理插件,
管理插件.png 插件管理页面.png
在可选插件页过滤栏,安装如下插件:
1.Xcode integrationXcode插件
2.Subversion Plug-inSVN代码管理插件
3.Git pluginGit代码管理插件(这个要看具体使用的代码管理工具进行安装,使用Git就安装这个,SVN就上面那个,我是使用SVN。)
4.Keychains and Provisioning Profiles Management证书管理插件
5.Email Extension Plugin邮件通知插件(可选)
6.GitHub pluginGitHub插件(可选)
安装后重启Jenkins;
创建一个新任务>选择创建自由风格的软件项目;
创建新任务.png
然后确定项目的名称,简介,勾选丢弃旧的构建,并设置保持的最大个数;
Snip20170630_7.png
源码管理:
选择SVN(或Git),输入仓库地址(引导至工程主目录),首次使用需要添加SVN登录账号和密码并选中,其他不用更改;
Snip20170630_8.png
构建触发器:
就是告诉jenkins什么时候自动构建,暂不设置;
Snip20170630_9.png
构建设置:
1.在Target处添加对应工程的Target,因为有的工程包含多个target,此处需要与当前创建的任务目的一致;
2.勾选Clean before build;
3..ipa文件命名格式可采用XXXX_{BUILD_DATE};
4.Output目录,就是打包的ipa文件存放处,谁便定个地址;
证书设置:
由于每个工程对应的证书和PP文件已经设置好,此处只要勾选Unlock KeyChain,然后在keychain path输入:${HOME}/Library/Keychains/login.keychain;keychain Password处输入开机密码;
Snip20170630_11.png
高级设置:
如果使用了Cocoapods,则需要在高级设置处额外进行一些配置;
1.在Xcode Schema file处填写当前target对应的Scheme名称;
2.SDK处写iphoneos;
3.Xcode Workspace File就写自己workspace的名称即可,不需要后缀;
4.Build output directory跟刚才的ipa输入地址一样即可;
Snip20170630_12.png
构建后设置:
此处就开始需要fir.im和BugHD以及Worktile等外部应用支持;因此暂时先不设置此部分,在把其余几项搞定后再返回来添加,先保存刚才的设置;
fir.im自动发布
没账号的先去fir.im官网注册。然后需要安装fir的上传插件;
具体可参考官方指导文件:fir.im Jenkins 插件使用方法
Jenkins 插件下载地址
BugHD实现Crash监测
由于我使用BugHD监测Crash记录,因此也顺带着配置了一下BugHD;
有fir.im账号就可以登录,BugHD官网;
由于在Jenkins中配置构建后设置的时候需要绑定当前应用的BugHD的项目ID,因此首先创建项目,
创建后如下:
Snip20170630_14.png
BugHD的使用也很简单iOS版使用方法,具体如下:
第一步:创建项目,获取General Key
General Key 用来唯一标识您的应用,为防止别人滥用,请勿泄露,建立每个项目时将自动生成项目对应的 General Key,可在项目列表页查看每个项目对应的 General Key 值
第二步:导入 SDK(二选一即可)
1.下载 KSCrash framework,并将下载的 framework 文件夹拖到 Xcode 项目中,导入项目时请勾选 “Copy items if needed”。
备注:KSCrash 为开源崩溃收集项目,详情可查看: KSCrash GitHub 项目
2.使用 Pod,在 Podfile中加入 pod 'KSCrash', '~> 1.8',然后使用 pod install 安装,例如:platform :ios, '8.0'target 'YOUR_TARGET' do pod 'KSCrash', '~> 1.8' ....end
2.在应用的设置中, Build Phases -> Link Binary With Libraries 里添加依赖库:
libc++.tbd
libz.tbd
SystemConfiguration.framework
注意:以上为 Xcode 7 配置,如果使用 Xcode 7 以前的版本请添加以下依赖库:
libc++.dylib
libz.dylib
SystemConfiguration.framework
3."Build Settings"->"Other Linker Flags"添加 -ObjC 字段
第三步:调用 SDK
在 AppDelegate.m 中导入头文件: <KSCrash/KSCrashInstallationStandard.h>
然后在 application:didFinishLaunchingWithOptions: 方法中加入:
KSCrashInstallationStandard* installation = [KSCrashInstallationStandard sharedInstance]; installation.url = [NSURL URLWithString:@"https://collector.bughd.com/kscrash?key=**22ecbcdef6539dea4fb8c453bfa99914**"]; [installation install]; [installation sendAllReportsWithCompletion:nil];
注意:
如果配置后收不到 crash ,请将 didFinishLaunchingWithOptions 方法中配置的部分放到最后,避免与其他 SDK 有接口冲突KSCrash 不接收 Debug 模式下的崩溃信息因为使用的是第三方kscrash,所以Bughd上没有显示没有激活,有crash产生后会自动激活。
接着上文的构建后配置
首先在构建后操作步骤中选择Upload to fir.im;
Snip20170630_17.png
然后开始配置fir.im插件:
Snip20170630_18.png
具体过程如下:
- fir.im Token(必填)
fir.im Token 查看方法:直接点击 API token 进行查看.
2.IPA/APK Files(可选)
接下来,选择生成 ipa/apk 文件路径
注意:
1.如果没有填写该选项,插会件自动默认查找 Jenkins 创建的项目目录下的 apk/ipa 文件
2.IPA/APK文件名称默认会设置成.apk结尾,iOS需要改成.ipa
3.BugHD token(可选)
作用:BugHD上传 mapping.txt/dSYM 文件 API 的调用权限
注意:如果需要上传符号表则是必填项;不需要上传混淆表,则不需要填写
BugHD token 查看方法:请访问 BugHD API token,登录后进行查看。
4、BugHD project ID(可选)
作用:判断具体上传到指定的 bughd 项目
注意:如果需要上传符号表,则是必填项;不需要上传则不用填写
BugHD project ID 查看方法: 请访问 BugHD Projects,登录后找到你要上传符号表的项目,进入该项目,选择 项目设置 选项卡进行查看。
5.dSYM File or mapping File(可选)
作用:选择生成 dSYM/mapping.txt 文件路径
注意:如果需要上传符号表,则是必填项;不需要上传则不用填写
6、 Build Notes(可选)
作用:上传 fir.im 后,可显示出更新日志
设置完成后,返回到Jenkins主页面,然后在对应任务下选择立即构建,如果配置没有问题的话,当执行完后,即可在fir.im上看到自己的应用;
Snip20170630_19.png
在fir.im的应用管理页面看到,当前应用已经发布上来,点击预览可以获取详情及二维码等,用微信扫描二维码就可以下载了;
Snip20170630_20.png
然后登录BugHD,同样在应用管理页面,选择同步fir.im项目,则改项目的资料即可自动与fir.im的进行关联;
至此,已经介绍了大部分内容