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的時候報錯。

    1
    
    [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 “[email protected] 生成過程中必須設置祕鑰密碼 否則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 配置相關的證書和配置文件,配置文件也要安裝到系統目錄下。
具體操作如下:從該用戶目錄下的所有描述文件

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

複製到系統目錄下

1
/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腳本打包:代碼如下:

    1
    
    xcrun -sdk iphones PackageApplication -v [工程目錄] -o [ipa輸出目錄]/xx.ipa
    
![](http://7xsugd.com2.z0.glb.clouddn.com/runningyoungBlog/images/xcode.png)
  1. Code signing & OS X keychain options 配置:如圖

  2. Advanced Xcode build options 配置:如圖

構建後操作

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

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

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

發佈了24 篇原創文章 · 獲贊 19 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章