由于公司負(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ù)即可亥啦,沒什么特別注意的炭剪;
安裝完成之后,Safari可能會自動打開禁悠,如果沒有自動打開念祭,打開瀏覽器,輸入http://localhost:8080碍侦;
第一次打開jenkins粱坤,會提示在指定地址獲取初始密鑰來解鎖隶糕,到指定地址獲取一串字符輸入進去就好,由于沒有權(quán)限站玄,可以使用終端cd進去枚驻,然后用cat指令查看;
然后是安裝默認(rèn)插件株旷,
插件安裝進度指示再登;
接著輸入用戶名和密碼就OK了,
進入主界面晾剖,至此我們就完成了安裝包方式對Jenkins的安裝及賬號配置锉矢,隨后需要對其進行一系列的工程配置;
(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)管理,
然后選擇管理插件卡骂,
在可選插件頁過濾欄国裳,安裝如下插件:
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)格的軟件項目盒使;
然后確定項目的名稱,簡介七嫌,勾選丟棄舊的構(gòu)建少办,并設(shè)置保持的最大個數(shù);
源碼管理:
選擇SVN(或Git)诵原,輸入倉庫地址(引導(dǎo)至工程主目錄)英妓,首次使用需要添加SVN登錄賬號和密碼并選中,其他不用更改绍赛;
構(gòu)建觸發(fā)器:
就是告訴jenkins什么時候自動構(gòu)建蔓纠,暫不設(shè)置;
構(gòu)建設(shè)置:
1.在Target處添加對應(yīng)工程的Target吗蚌,因為有的工程包含多個target腿倚,此處需要與當(dāng)前創(chuàng)建的任務(wù)目的一致;
2.勾選Clean before build蚯妇;
3..ipa文件命名格式可采用XXXX_{BUILD_DATE};
4.Output目錄敷燎,就是打包的ipa文件存放處暂筝,誰便定個地址;
證書設(shè)置:
由于每個工程對應(yīng)的證書和PP文件已經(jīng)設(shè)置好硬贯,此處只要勾選Unlock KeyChain焕襟,然后在keychain path輸入:${HOME}/Library/Keychains/login.keychain;keychain Password處輸入開機密碼饭豹;
高級設(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輸入地址一樣即可列赎;
構(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)建項目,
創(chuàng)建后如下:
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;
然后開始配置fir.im插件:
具體過程如下:
- fir.im Token(必填)
fir.im Token 查看方法:直接點擊 API token 進行查看.
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,登錄后進行查看帅刊。
4纸泡、BugHD project ID(可選)
作用:判斷具體上傳到指定的 bughd 項目
注意:如果需要上傳符號表,則是必填項赖瞒;不需要上傳則不用填寫
BugHD project ID 查看方法: 請訪問 BugHD Projects女揭,登錄后找到你要上傳符號表的項目,進入該項目栏饮,選擇 項目設(shè)置 選項卡進行查看吧兔。
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)用;
在fir.im的應(yīng)用管理頁面看到弓柱,當(dāng)前應(yīng)用已經(jīng)發(fā)布上來调缨,點擊預(yù)覽可以獲取詳情及二維碼等,用微信掃描二維碼就可以下載了吆你;
然后登錄BugHD弦叶,同樣在應(yīng)用管理頁面,選擇同步fir.im項目妇多,則改項目的資料即可自動與fir.im的進行關(guān)聯(lián)伤哺;
至此,已經(jīng)介紹了大部分內(nèi)容