Jenkins+SVN+fir.im+BugHD搭建持續整合,實現IOS自動化打包、Bug實時動態監測

weixin_34194087發表於2017-06-30

由於公司負責產品過多,因此有很多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官網地址下載安裝包,一直繼續即可,沒什麼特別注意的;

900142-d5d441ecba8854ed.png
開始安裝.png

900142-48a247254854da44.png
安裝完成.png

安裝完成之後,Safari可能會自動開啟,如果沒有自動開啟,開啟瀏覽器,輸入http://localhost:8080
第一次開啟jenkins,會提示在指定地址獲取初始金鑰來解鎖,到指定地址獲取一串字元輸入進去就好,由於沒有許可權,可以使用終端cd進去,然後用cat指令檢視;

900142-9ff746d5351c474f.png
解除鎖定.png

然後是安裝預設外掛,


900142-39df1421e89460b2.png
安裝預設外掛.png

外掛安裝進度指示;


900142-1e595a5d854ff06f.png
外掛安裝進度指示.png

接著輸入使用者名稱和密碼就OK了,


900142-a42907fb82585130.png
賬號介面.png

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


900142-f8d3dfc4966f8ec0.png
主介面.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中安裝外掛及建立和配置工程。

在主頁面選擇系統管理,


900142-aa12aa43fac38f54.png
主頁面.png

然後選擇管理外掛,


900142-a2444ad8cfdf416c.png
管理外掛.png
900142-9ef43816679234fe.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;

建立一個新任務>選擇建立自由風格的軟體專案;


900142-3e49c49c3e91b0b1.png
建立新任務.png

然後確定專案的名稱,簡介,勾選丟棄舊的構建,並設定保持的最大個數;


900142-c80e6f7a638da1b1.png
Snip20170630_7.png

原始碼管理:
選擇SVN(或Git),輸入倉庫地址(引導至工程主目錄),首次使用需要新增SVN登入賬號和密碼並選中,其他不用更改;


900142-d6072f9eae80c495.png
Snip20170630_8.png

構建觸發器:
就是告訴jenkins什麼時候自動構建,暫不設定;


900142-f6db962d6b4531ca.png
Snip20170630_9.png

構建設定:
1.在Target處新增對應工程的Target,因為有的工程包含多個target,此處需要與當前建立的任務目的一致;
2.勾選Clean before build;
3..ipa檔案命名格式可採用XXXX_{BUILD_DATE};
4.Output目錄,就是打包的ipa檔案存放處,誰便定個地址;

900142-8f5e6277dfb5ac71.png
Snip20170630_10.png

證照設定:
由於每個工程對應的證照和PP檔案已經設定好,此處只要勾選Unlock KeyChain,然後在keychain path輸入:${HOME}/Library/Keychains/login.keychain;keychain Password處輸入開機密碼;


900142-70b8789386204fc6.png
Snip20170630_11.png

高階設定:
如果使用了Cocoapods,則需要在高階設定處額外進行一些配置;
1.在Xcode Schema file處填寫當前target對應的Scheme名稱;
2.SDK處寫iphoneos;
3.Xcode Workspace File就寫自己workspace的名稱即可,不需要字尾;
4.Build output directory跟剛才的ipa輸入地址一樣即可;


900142-44eff92524d3943f.png
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,因此首先建立專案,

900142-fec734fa1313dfee.png
Snip20170630_13.png

建立後如下:
900142-0665047754e77054.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 欄位

900142-6884499acbd846b5.png

第三步:呼叫 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;


900142-75c3b9de80d4bd63.png
Snip20170630_17.png

然後開始配置fir.im外掛:


900142-a6155e74795b100f.png
Snip20170630_18.png

具體過程如下:

  1. fir.im Token(必填)
    fir.im Token 檢視方法:直接點選 API token 進行檢視.
900142-c4542f12eb3fac64.png
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,登入後進行檢視。

900142-627c66ed578addb4.png
fir.im

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

BugHD project ID 檢視方法: 請訪問 BugHD Projects,登入後找到你要上傳符號表的專案,進入該專案,選擇 專案設定 選項卡進行檢視。

900142-959d4292eca0fe19.jpg
fir.im

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

6、 Build Notes(可選)
作用:上傳 fir.im 後,可顯示出更新日誌

設定完成後,返回到Jenkins主頁面,然後在對應任務下選擇立即構建,如果配置沒有問題的話,當執行完後,即可在fir.im上看到自己的應用;


900142-7b0089139d286116.png
Snip20170630_19.png

在fir.im的應用管理頁面看到,當前應用已經發布上來,點選預覽可以獲取詳情及二維碼等,用微信掃描二維碼就可以下載了;


900142-9607de3383285fef.png
Snip20170630_20.png

然後登入BugHD,同樣在應用管理頁面,選擇同步fir.im專案,則改專案的資料即可自動與fir.im的進行關聯;


至此,已經介紹了大部分內容

相關文章