iOS持續(xù)集成:jenkins+gitlab+蒲公英+郵件通知(Part 2)
Jenkins 系統(tǒng)設(shè)置 前期準(zhǔn)備
Jenkins 插件安裝
安裝GitLab插件
因?yàn)槲覀冺?xiàng)目用的是GitLab來管理源代碼,jenkins本身并沒有自帶GitLab插件,所以我們需要依次選擇 系統(tǒng)管理 -> 管理插件 在"可選插件"中選擇GitLab Plugin 和 Gitlab Hook Plugin 這兩項(xiàng),然后安裝安裝Xcode插件
同安裝GitLab插件步驟一樣,我們一次選擇 系統(tǒng)管理 -> 管理插件 在"可選插件"中選擇Xcode integration這兩項(xiàng),然后安裝安裝簽名證書管理插件
iOS打包內(nèi)測(cè)版時(shí),需要發(fā)布證書及相關(guān)簽名文件,因此這兩個(gè)插件對(duì)于管理iOS證書非常方便。還是在系統(tǒng)管理->管理插件,在“可選插件”中選中“Credentials Plugin”和“Keychains and Provisioning Profiles Management”安裝。安裝FTP插件
此插件可用于上傳FTP服務(wù)器,也可以上傳到公司內(nèi)網(wǎng)的FTP服務(wù)器中。"Publish over FTP"安裝腳本插件
這個(gè)插件主要用于build后執(zhí)行先關(guān)腳本."Publish over FTP"
jenkins 系統(tǒng)配置
jenkins 安全設(shè)置:注冊(cè),登錄
進(jìn)入 系統(tǒng)管理->Configure Global Security 首次設(shè)置如圖所示:
首次設(shè)置完點(diǎn)擊保存,然后點(diǎn)擊注冊(cè)->登錄賬號(hào),在進(jìn)入該界面進(jìn)行賬號(hào)權(quán)限設(shè)置,如圖
jenkins 系統(tǒng)設(shè)置
進(jìn)入 系統(tǒng)管理->系統(tǒng)設(shè)置 界面:
-
首先設(shè)置一下 jenkins 內(nèi)部shell 執(zhí)行編碼,目的當(dāng)在jenkins執(zhí)行shell命令時(shí),有時(shí)候會(huì)報(bào) utf-8 編碼錯(cuò)誤。主要是pod install的時(shí)候報(bào)錯(cuò)。
?[33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
設(shè)置如下:
編碼設(shè)置 -
jenkins Location 設(shè)置
主要設(shè)置 jenkins 外部訪問的URL 和 系統(tǒng)管理員的郵箱地址。用來發(fā)送 錯(cuò)誤報(bào)告的郵箱地址:如圖url設(shè)置 -
系統(tǒng)錯(cuò)誤報(bào)告的郵箱設(shè)置,上面只設(shè)置了郵箱發(fā)送的地址(From地址),下面設(shè)置,郵箱的服務(wù)器,協(xié)議,郵箱,密碼。如圖
email設(shè)置
Jenkins 任務(wù)(Jobs)搭建
新建任務(wù) job
在Jenkins中,所有的任務(wù)都是以“item”為單位的。接下來我們就新建一個(gè)iOS的項(xiàng)目來開始自動(dòng)化構(gòu)建。點(diǎn)擊“新建”,輸入item的名稱,選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”,然后點(diǎn)擊“OK”。如圖:
設(shè)置構(gòu)建信息
源碼管理
這里用到的是GitLab,先需要配置SSH,我們可以在Jenkins的證書管理中添加SSH。在Jenkins管理頁(yè)面,選擇“Credentials”,然后選擇“Global credentials (unrestricted)”,點(diǎn)擊“Add Credentials”,如下圖所示,我們填寫自己的SSH信息,然后點(diǎn)擊“Save”,這樣就把SSH添加到Jenkins的全局域中去了。
這邊需要注意的是如何獲取SSH key:這個(gè)問題需要參考 gitLab 上配置SSH 的方法。
- 查看是否已經(jīng)有了ssh密鑰:cd ~/.ssh,如果沒有密鑰則不會(huì)有此文件夾,有則備份刪除
- 生成密鑰:
$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”
生成過程中必須設(shè)置秘鑰密碼 否則jenkins 設(shè)置會(huì)不成功。最后得到兩個(gè)文件:id_rsa和id_rsa.pub - 添加密鑰到SSH :
ssh-add 文件名
需要輸入管理密碼 - 在gitlab 上添加 ssh 密鑰,這里添加的是 "id_rsa.pub"里面的公鑰。
- 在jenkins上配置密鑰到SSH ,這里添加的是id_rsa里面的私鑰。具體設(shè)置如圖所示:
接下來,我們?cè)倩氐絼倓傂陆ǖ娜蝿?wù)中,在源碼管理中,選擇Git,按下圖填好相關(guān)信息。PS:Credentials不需要選擇。如圖
構(gòu)建觸發(fā)器設(shè)置
該設(shè)置主要是為了實(shí)現(xiàn)自動(dòng)觸發(fā) jenkins 構(gòu)建過程 真正實(shí)現(xiàn)自動(dòng)化設(shè)置:
這邊主要處理的是 gitlab hook 的設(shè)置。主要目的是當(dāng)項(xiàng)目中有人git push 提交過代碼之后,就會(huì)自動(dòng)的觸發(fā) jenkins 的本Job的構(gòu)建,實(shí)現(xiàn)自動(dòng)化打包。
- 首選需要在gitlab 項(xiàng)目管理官網(wǎng)上設(shè)置 添加git hook 的地址:如圖:該地址是jenkins 上 提示的地址 下面會(huì)提到
- jenkins 上對(duì) gitlab hook 進(jìn)行相關(guān)配置 如圖所示:
構(gòu)建環(huán)境
在該模塊中 主要設(shè)置 xcode build 打包時(shí)需要的 keychains 和 Provision Profiles 配置文件。
如果不配置 就會(huì)使用 xcode 自動(dòng)的配置,來去系統(tǒng)中查找相應(yīng)的配置,不過有一點(diǎn)需要注意,就是鑰匙串中,登陸鑰匙串中的證書 要復(fù)制到 系統(tǒng)鑰匙串中,因?yàn)閖enkins 訪問的是系統(tǒng)中的鑰匙串 這樣在第一次打包的時(shí)候,會(huì)提示 是否授權(quán)訪問鑰匙串,點(diǎn)擊始終允許就可以了。
注意:在電腦上安裝好 xcode 配置相關(guān)的證書和配置文件,配置文件也要安裝到系統(tǒng)目錄下。
具體操作如下:從該用戶目錄下的所有描述文件
/Users/用戶名/Library/MobileDevice/Provisioning Profiles
復(fù)制到系統(tǒng)目錄下
/Library/MobileDevice/Provisioning Profiles
構(gòu)建
該模塊開始設(shè)置 iOS打包相關(guān)的配置。
-
點(diǎn)擊增加構(gòu)建步驟-> Execute Shell .首先 在build 之前需要先 pod install ,并且最理想的情況是每次構(gòu)建的時(shí)候 build號(hào)都改變。如圖所示
需要注意的是,使用全局變量時(shí) 必須找到絕對(duì)路徑才能調(diào)用相關(guān)的命令:版本號(hào)增加參考鏈接 -
點(diǎn)擊增加構(gòu)建步驟 xcode ,具體配置如圖:
該配置中需要注意 在OS X 10.10.XX版本 jenkins xcode 插件不支持 生成ipa文件,但 OS X 10.11 支持 這個(gè)時(shí)候 需要手動(dòng)進(jìn)行打包,具體的就是在build 完成之后 添加EXecute Shell ,利用shell腳本打包:代碼如下:xcrun -sdk iphones PackageApplication -v [工程目錄] -o [ipa輸出目錄]/xx.ipa

-
Code signing & OS X keychain options 配置:如圖
-
Advanced Xcode build options 配置:如圖
構(gòu)建后操作
打包完成之后 需要執(zhí)行 上傳到蒲公英 和 發(fā)送郵件 通知開發(fā)人員。
具體操作我用python寫的腳本來完成此功能:需要的童鞋可以去github上下載:在文章最后!!
具體調(diào)用如圖:
最后設(shè)置 通知郵件 E-mail Notification 填寫接受郵箱即可 每次構(gòu)建失敗都會(huì)發(fā)生郵件通知!!!
python 腳本地址!!! 不要吝嗇 star!!!不勝感激!!!