Jenkins+SVN+fir.im+BugHD搭建持续集成,实现IOS自动化打包、Bug实时动态监测

由于公司负责产品过多,因此有很多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官网地址下载安装包,一直继续即可,没什么特别注意的;

开始安装.png

安装完成.png

安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080
第一次打开jenkins,会提示在指定地址获取初始密钥来解锁,到指定地址获取一串字符输入进去就好,由于没有权限,可以使用终端cd进去,然后用cat指令查看;

解除锁定.png

然后是安装默认插件,


安装默认插件.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_{VERSION}_{BUILD_DATE};
4.Output目录,就是打包的ipa文件存放处,谁便定个地址;

Snip20170630_10.png

证书设置:
由于每个工程对应的证书和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_13.png

创建后如下:
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

具体过程如下:

  1. fir.im Token(必填)
    fir.im Token 查看方法:直接点击 API token 进行查看.
fir.im

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,登录后进行查看。

fir.im

4、BugHD project ID(可选)
作用:判断具体上传到指定的 bughd 项目
注意:如果需要上传符号表,则是必填项;不需要上传则不用填写

BugHD project ID 查看方法: 请访问 BugHD Projects,登录后找到你要上传符号表的项目,进入该项目,选择 项目设置 选项卡进行查看。

fir.im

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的进行关联;


至此,已经介绍了大部分内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容