Jenkins+SVN+fir.im+BugHD搭建持續(xù)集成欧宜,實現(xiàn)IOS自動化打包、Bug實時動態(tài)監(jiān)測

由于公司負(fù)責(zé)產(chǎn)品過多拴魄,因此有很多APP要管理鱼鸠、打包、測試和發(fā)布羹铅,因此每周有很多時間浪費在這些事情上面;產(chǎn)品??總是天天跟在屁股后面要版本愉昆,測試員要改bug和打包职员,每天都要跟他們唇槍舌戰(zhàn)上半天;實在沒辦法了跛溉,才想起我之前一直想搞的持續(xù)集成焊切,盡量實現(xiàn)代碼管理、打包芳室、發(fā)布和測試的自動化专肪;雖然還有很多的路要走,但是先慢慢一點一點實現(xiàn)堪侯。

本文概要:
1.Jenkins環(huán)境的搭建和工程創(chuàng)建及配置嚎尤;
2.fir.im自動發(fā)布;
3.BugHD實現(xiàn)Crash監(jiān)測伍宦;


Jenkins環(huán)境的搭建和工程創(chuàng)建及配置

1.Jenkins環(huán)境的搭建

Jenkins是基于Java開發(fā)的工具芽死,因此要使用Jenkins必須要安裝JDK,可以在終端輸入“java -version”來查看是否支持Java環(huán)境次洼,如果沒有版本信息則請下載安裝关贵,JDK安裝地址

Jenkins的安裝有兩種方式:
(1).官網(wǎng)下載安裝包安裝卖毁;
(2).Homebrew方式安裝揖曾;

(1).官網(wǎng)下載安裝包安裝

Jenkins官網(wǎng)地址下載安裝包,一直繼續(xù)即可亥啦,沒什么特別注意的炭剪;

開始安裝.png

安裝完成.png

安裝完成之后,Safari可能會自動打開禁悠,如果沒有自動打開念祭,打開瀏覽器,輸入http://localhost:8080碍侦;
第一次打開jenkins粱坤,會提示在指定地址獲取初始密鑰來解鎖隶糕,到指定地址獲取一串字符輸入進去就好,由于沒有權(quán)限站玄,可以使用終端cd進去枚驻,然后用cat指令查看;

解除鎖定.png

然后是安裝默認(rèn)插件株旷,


安裝默認(rèn)插件.png

插件安裝進度指示再登;


插件安裝進度指示.png

接著輸入用戶名和密碼就OK了,


賬號界面.png

進入主界面晾剖,至此我們就完成了安裝包方式對Jenkins的安裝及賬號配置锉矢,隨后需要對其進行一系列的工程配置;


主界面.png
(2).Homebrew方式安裝

通過終端輸入“brew --version”查看是否安裝過Homebrew,如果沒安裝過請參考Mac下使用國內(nèi)鏡像安裝Homebrew這篇文章齿尽;

在終端輸入安裝命令:

$ brew install jenkins

輸入啟動命令:

$ jenkins

看到這一段沽损, 記事本保存密鑰備用

Please use the following password to proceed to installation:
------------------------------(密鑰)

然后就是跟剛才類似的過程:
瀏覽器訪問 http://localhost:8080
在解鎖頁面輸入剛才記錄的密鑰,接下來請參考如上的安裝包方式的流程循头;

2.工程創(chuàng)建及配置

接下來就開始在Jenkins中安裝插件及創(chuàng)建和配置工程绵估。

在主頁面選擇系統(tǒng)管理,


主頁面.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螟蒸;

創(chuàng)建一個新任務(wù)>選擇創(chuàng)建自由風(fēng)格的軟件項目盒使;


創(chuàng)建新任務(wù).png

然后確定項目的名稱,簡介七嫌,勾選丟棄舊的構(gòu)建少办,并設(shè)置保持的最大個數(shù);


Snip20170630_7.png

源碼管理:
選擇SVN(或Git)诵原,輸入倉庫地址(引導(dǎo)至工程主目錄)英妓,首次使用需要添加SVN登錄賬號和密碼并選中,其他不用更改绍赛;


Snip20170630_8.png

構(gòu)建觸發(fā)器:
就是告訴jenkins什么時候自動構(gòu)建蔓纠,暫不設(shè)置;


Snip20170630_9.png

構(gòu)建設(shè)置:
1.在Target處添加對應(yīng)工程的Target吗蚌,因為有的工程包含多個target腿倚,此處需要與當(dāng)前創(chuàng)建的任務(wù)目的一致;
2.勾選Clean before build蚯妇;
3..ipa文件命名格式可采用XXXX_{VERSION}_{BUILD_DATE};
4.Output目錄敷燎,就是打包的ipa文件存放處暂筝,誰便定個地址;

Snip20170630_10.png

證書設(shè)置:
由于每個工程對應(yīng)的證書和PP文件已經(jīng)設(shè)置好硬贯,此處只要勾選Unlock KeyChain焕襟,然后在keychain path輸入:${HOME}/Library/Keychains/login.keychain;keychain Password處輸入開機密碼饭豹;


Snip20170630_11.png

高級設(shè)置:
如果使用了Cocoapods鸵赖,則需要在高級設(shè)置處額外進行一些配置;
1.在Xcode Schema file處填寫當(dāng)前target對應(yīng)的Scheme名稱拄衰;
2.SDK處寫iphoneos它褪;
3.Xcode Workspace File就寫自己workspace的名稱即可,不需要后綴翘悉;
4.Build output directory跟剛才的ipa輸入地址一樣即可列赎;


Snip20170630_12.png

構(gòu)建后設(shè)置:
此處就開始需要fir.im和BugHD以及Worktile等外部應(yīng)用支持;因此暫時先不設(shè)置此部分镐确,在把其余幾項搞定后再返回來添加,先保存剛才的設(shè)置饼煞;


fir.im自動發(fā)布

沒賬號的先去fir.im官網(wǎng)注冊源葫。然后需要安裝fir的上傳插件;
具體可參考官方指導(dǎo)文件:fir.im Jenkins 插件使用方法
Jenkins 插件下載地址


BugHD實現(xiàn)Crash監(jiān)測

由于我使用BugHD監(jiān)測Crash記錄砖瞧,因此也順帶著配置了一下BugHD息堂;
有fir.im賬號就可以登錄,BugHD官網(wǎng)块促;
由于在Jenkins中配置構(gòu)建后設(shè)置的時候需要綁定當(dāng)前應(yīng)用的BugHD的項目ID荣堰,因此首先創(chuàng)建項目,

Snip20170630_13.png

創(chuàng)建后如下:
Snip20170630_14.png

BugHD的使用也很簡單iOS版使用方法竭翠,具體如下:
第一步:創(chuàng)建項目振坚,獲取General Key
General Key 用來唯一標(biāo)識您的應(yīng)用,為防止別人濫用斋扰,請勿泄露渡八,建立每個項目時將自動生成項目對應(yīng)的 General Key,可在項目列表頁查看每個項目對應(yīng)的 General Key 值
第二步:導(dǎo)入 SDK(二選一即可)
1.下載 KSCrash framework传货,并將下載的 framework 文件夾拖到 Xcode 項目中,導(dǎo)入項目時請勾選 “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.在應(yīng)用的設(shè)置中, Build Phases -> Link Binary With Libraries 里添加依賴庫:
libc++.tbd
libz.tbd
SystemConfiguration.framework

注意:以上為 Xcode 7 配置粮宛,如果使用 Xcode 7 以前的版本請?zhí)砑右韵乱蕾噹欤?/strong>
libc++.dylib
libz.dylib
SystemConfiguration.framework

3."Build Settings"->"Other Linker Flags"添加 -ObjC 字段


第三步:調(diào)用 SDK
在 AppDelegate.m 中導(dǎo)入頭文件: <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產(chǎn)生后會自動激活逗堵。


接著上文的構(gòu)建后配置
首先在構(gòu)建后操作步驟中選擇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.如果沒有填寫該選項蜒秤,插會件自動默認(rèn)查找 Jenkins 創(chuàng)建的項目目錄下的 apk/ipa 文件
2.IPA/APK文件名稱默認(rèn)會設(shè)置成.apk結(jié)尾,iOS需要改成.ipa

3.BugHD token(可選)
作用:BugHD上傳 mapping.txt/dSYM 文件 API 的調(diào)用權(quán)限
注意:如果需要上傳符號表則是必填項亚斋;不需要上傳混淆表作媚,則不需要填寫

BugHD token 查看方法:請訪問 BugHD API token,登錄后進行查看帅刊。

fir.im

4纸泡、BugHD project ID(可選)
作用:判斷具體上傳到指定的 bughd 項目
注意:如果需要上傳符號表,則是必填項赖瞒;不需要上傳則不用填寫

BugHD project ID 查看方法: 請訪問 BugHD Projects女揭,登錄后找到你要上傳符號表的項目,進入該項目栏饮,選擇 項目設(shè)置 選項卡進行查看吧兔。

fir.im

5.dSYM File or mapping File(可選)
作用:選擇生成 dSYM/mapping.txt 文件路徑
注意:如果需要上傳符號表,則是必填項袍嬉;不需要上傳則不用填寫

6境蔼、 Build Notes(可選)
作用:上傳 fir.im 后,可顯示出更新日志

設(shè)置完成后伺通,返回到Jenkins主頁面箍土,然后在對應(yīng)任務(wù)下選擇立即構(gòu)建,如果配置沒有問題的話罐监,當(dāng)執(zhí)行完后吴藻,即可在fir.im上看到自己的應(yīng)用;


Snip20170630_19.png

在fir.im的應(yīng)用管理頁面看到弓柱,當(dāng)前應(yīng)用已經(jīng)發(fā)布上來调缨,點擊預(yù)覽可以獲取詳情及二維碼等,用微信掃描二維碼就可以下載了吆你;


Snip20170630_20.png

然后登錄BugHD弦叶,同樣在應(yīng)用管理頁面,選擇同步fir.im項目妇多,則改項目的資料即可自動與fir.im的進行關(guān)聯(lián)伤哺;


至此,已經(jīng)介紹了大部分內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市立莉,隨后出現(xiàn)的幾起案子绢彤,更是在濱河造成了極大的恐慌,老刑警劉巖蜓耻,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茫舶,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹淌,警方通過查閱死者的電腦和手機饶氏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來有勾,“玉大人疹启,你說我怎么就攤上這事“ǎ” “怎么了喊崖?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雇逞。 經(jīng)常有香客問我荤懂,道長,這世上最難降的妖魔是什么塘砸? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任势誊,我火速辦了婚禮,結(jié)果婚禮上谣蠢,老公的妹妹穿的比我還像新娘。我一直安慰自己查近,他們只是感情好眉踱,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霜威,像睡著了一般谈喳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戈泼,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天婿禽,我揣著相機與錄音,去河邊找鬼大猛。 笑死扭倾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挽绩。 我是一名探鬼主播膛壹,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了模聋?” 一聲冷哼從身側(cè)響起肩民,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎链方,沒想到半個月后持痰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡祟蚀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年工窍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂题。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡移剪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出薪者,到底是詐尸還是另有隱情纵苛,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布言津,位于F島的核電站攻人,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悬槽。R本人自食惡果不足惜怀吻,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初婆。 院中可真熱鬧蓬坡,春花似錦、人聲如沸磅叛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弊琴。三九已至兆龙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敲董,已是汗流浹背紫皇。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腋寨,地道東北人聪铺。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像萄窜,于是被迫代替她去往敵國和親计寇。 傳聞我的和親對象是個殘疾皇子锣杂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容