iOS持續集成:jenkins+gitlab+蒲公英+郵件通知(Part 2)

iOS持續集成:jenkins+gitlab+蒲公英+郵件通知(Part 2)

Jenkins 系統設置 前期準備

Jenkins 插件安裝

  • 安裝GitLab插件
    因為我們項目用的是GitLab來管理源代碼,jenkins本身并沒有自帶GitLab插件,所以我們需要依次選擇 系統管理 -> 管理插件 在"可選插件"中選擇GitLab Plugin 和 Gitlab Hook Plugin 這兩項,然后安裝

  • 安裝Xcode插件
    同安裝GitLab插件步驟一樣,我們一次選擇 系統管理 -> 管理插件 在"可選插件"中選擇Xcode integration這兩項,然后安裝

  • 安裝簽名證書管理插件
    iOS打包內測版時,需要發布證書及相關簽名文件,因此這兩個插件對于管理iOS證書非常方便。還是在系統管理->管理插件,在“可選插件”中選中“Credentials Plugin”和“Keychains and Provisioning Profiles Management”安裝。

  • 安裝FTP插件
    此插件可用于上傳FTP服務器,也可以上傳到公司內網的FTP服務器中。"Publish over FTP"

  • 安裝腳本插件
    這個插件主要用于build后執行先關腳本."Publish over FTP"

jenkins 系統配置

jenkins 安全設置:注冊,登錄

進入 系統管理->Configure Global Security 首次設置如圖所示:

首次設置

首次設置完點擊保存,然后點擊注冊->登錄賬號,在進入該界面進行賬號權限設置,如圖

權限設置

jenkins 系統設置

進入 系統管理->系統設置 界面:

  • 首先設置一下 jenkins 內部shell 執行編碼,目的當在jenkins執行shell命令時,有時候會報 utf-8 編碼錯誤。主要是pod install的時候報錯。

    ?[33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
    

    設置如下:

    編碼設置
  • jenkins Location 設置
    主要設置 jenkins 外部訪問的URL 和 系統管理員的郵箱地址。用來發送 錯誤報告的郵箱地址:如圖

    url設置
  • 系統錯誤報告的郵箱設置,上面只設置了郵箱發送的地址(From地址),下面設置,郵箱的服務器,協議,郵箱,密碼。如圖

    email設置

Jenkins 任務(Jobs)搭建

新建任務 job

在Jenkins中,所有的任務都是以“item”為單位的。接下來我們就新建一個iOS的項目來開始自動化構建。點擊“新建”,輸入item的名稱,選擇“構建一個自由風格的軟件項目”,然后點擊“OK”。如圖:

新建Job設置

設置構建信息

構建信息設置

源碼管理

這里用到的是GitLab,先需要配置SSH,我們可以在Jenkins的證書管理中添加SSH。在Jenkins管理頁面,選擇“Credentials”,然后選擇“Global credentials (unrestricted)”,點擊“Add Credentials”,如下圖所示,我們填寫自己的SSH信息,然后點擊“Save”,這樣就把SSH添加到Jenkins的全局域中去了。
這邊需要注意的是如何獲取SSH key:這個問題需要參考 gitLab 上配置SSH 的方法。

  1. 查看是否已經有了ssh密鑰:cd ~/.ssh,如果沒有密鑰則不會有此文件夾,有則備份刪除
  2. 生成密鑰:$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com” 生成過程中必須設置秘鑰密碼 否則jenkins 設置會不成功。最后得到兩個文件:id_rsa和id_rsa.pub
  3. 添加密鑰到SSH :ssh-add 文件名 需要輸入管理密碼
  4. 在gitlab 上添加 ssh 密鑰,這里添加的是 "id_rsa.pub"里面的公鑰。
  5. 在jenkins上配置密鑰到SSH ,這里添加的是id_rsa里面的私鑰。具體設置如圖所示:

接下來,我們再回到剛剛新建的任務中,在源碼管理中,選擇Git,按下圖填好相關信息。PS:Credentials不需要選擇。如圖

構建觸發器設置

該設置主要是為了實現自動觸發 jenkins 構建過程 真正實現自動化設置:
這邊主要處理的是 gitlab hook 的設置。主要目的是當項目中有人git push 提交過代碼之后,就會自動的觸發 jenkins 的本Job的構建,實現自動化打包。

  1. 首選需要在gitlab 項目管理官網上設置 添加git hook 的地址:如圖:該地址是jenkins 上 提示的地址 下面會提到
  1. jenkins 上對 gitlab hook 進行相關配置 如圖所示:

構建環境

在該模塊中 主要設置 xcode build 打包時需要的 keychains 和 Provision Profiles 配置文件。
如果不配置 就會使用 xcode 自動的配置,來去系統中查找相應的配置,不過有一點需要注意,就是鑰匙串中,登陸鑰匙串中的證書 要復制到 系統鑰匙串中,因為jenkins 訪問的是系統中的鑰匙串 這樣在第一次打包的時候,會提示 是否授權訪問鑰匙串,點擊始終允許就可以了。
注意:在電腦上安裝好 xcode 配置相關的證書和配置文件,配置文件也要安裝到系統目錄下。
具體操作如下:從該用戶目錄下的所有描述文件

/Users/用戶名/Library/MobileDevice/Provisioning Profiles

復制到系統目錄下

/Library/MobileDevice/Provisioning Profiles

構建

該模塊開始設置 iOS打包相關的配置。

  1. 點擊增加構建步驟-> Execute Shell .首先 在build 之前需要先 pod install ,并且最理想的情況是每次構建的時候 build號都改變。如圖所示
    需要注意的是,使用全局變量時 必須找到絕對路徑才能調用相關的命令:版本號增加參考鏈接

  2. 點擊增加構建步驟 xcode ,具體配置如圖:
    該配置中需要注意 在OS X 10.10.XX版本 jenkins xcode 插件不支持 生成ipa文件,但 OS X 10.11 支持 這個時候 需要手動進行打包,具體的就是在build 完成之后 添加EXecute Shell ,利用shell腳本打包:代碼如下:

    xcrun -sdk iphones PackageApplication -v [工程目錄] -o [ipa輸出目錄]/xx.ipa
    
  ![](http://upload-images.jianshu.io/upload_images/670028-1ce567c59942f808.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. Code signing & OS X keychain options 配置:如圖

  2. Advanced Xcode build options 配置:如圖

構建后操作

打包完成之后 需要執行 上傳到蒲公英 和 發送郵件 通知開發人員。
具體操作我用python寫的腳本來完成此功能:需要的童鞋可以去github上下載:在文章最后!!
具體調用如圖:

最后設置 通知郵件 E-mail Notification 填寫接受郵箱即可 每次構建失敗都會發生郵件通知!!!

python 腳本地址!!! 不要吝嗇 star!!!不勝感激!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容