1. 程式人生 > >使用Jenkins+gitlab自動化打包

使用Jenkins+gitlab自動化打包

簡介

Jenkins

Jenkins,一個用Java編寫的開源的持續整合工具,提供了軟體開發的持續整合服務,可監控並觸發持續重複的工作,具有開源,支援多平臺和外掛擴充套件,安裝簡單,介面化管理等特點。

Gitlab

GitLab是一個利用Ruby on Rails開發的開源應用程式,實現一個自託管的Git專案倉庫,可通過Web介面進行訪問公開的或者私人專案。

持續整合

持續整合, 簡稱CI(continuous integration).
CI作為敏捷開發重要的一步,其目的在於讓產品快速迭代的同時,儘可能保持高質量.
CI一種可以增加專案可見性,降低專案失敗風險的開發實踐。其每一次程式碼更新,都要通過自動化測試來檢測程式碼和功能的正確性,只有通過自動測試的程式碼才能進行後續的交付和部署.
CI 是團隊成員間(產研測)更好地協調工作,更好的適應敏捷迭代開發,自動完成減少人工干預,保證每個時間點上團隊成員提交的程式碼都能成功整合的,可以很好的用於對Android/iOS專案的打包.

Jenkins打包流程

安裝

安裝Jenkins

Jenkins依賴於Java執行環境,因此需要首先安裝Java。
安裝Jenkins的方式有多種,可以執行對應系統型別的安裝包,可以通過docker獲取映象,也可以直接執行war包。
我個人傾向於直接執行war包的形式,只需下載jenkins.war後,執行如下命令即可啟動Jenkins。

$ nohup java -jar jenkins_located_path/jenkins.war –httpPort=88 &

如果不指定httpPort,Jenkins的預設埠為8080。

Jenkins外掛安裝

這裡寫圖片描述

實用外掛

  • iOS專用:Xcode integration
  • Android專用:Gradle plugin
  • Gitlab外掛:GitLab Plugin 和 Gitlab Hook Plugin
  • Git外掛: Git plugin
  • GitBuckit外掛: GitBuckit plugin
  • 簽名證書管理外掛: Credentials Plugin 和Keychains and Provisioning Profiles Management
  • FTP外掛: Publish over FTP
  • 指令碼外掛: Post-Build Script Plug-in
  • 修改Build名稱/描述(二維碼): build-name-setter / description setter plugin
  • 獲取倉庫提交的commit log: Git Changelog Plugin
  • 自定義全域性變數: Environment Injector Plugin
  • 自定義郵件外掛: Email Extension Plugin
  • 獲取當前登入使用者資訊: build-user-vars-plugin
  • 顯示程式碼測試覆蓋率報表: Cobertura Plugin
    來展示生成的單元測試報表,支援一切單測框架,如junit、nosetests等: Junit Plugin
  • 其它: GIT plugin / SSH Credentials Plugin

建立專案(Job)

在Jenkins中,構建專案以Job的形式存在,因此需要針對每個專案建立一個Job。有時候,一個專案中可能有多個分支同時在進行開發,為了分別進行構建,也可以針對每個分支建立一個Job。
建立Job的方式有多種,本次只需要建立Freestyle project型別的即可。

Main page -> New Item -> Freestyle project

對於一個持續整合打包平臺,每次打包都由4步組成:觸發構建、拉取程式碼、執行構建、構建後處理。對應的,在每個Job中也對應了這幾項的配置。

Jenkins Jobs配置

1.新建job;
2.配置Git程式碼倉庫

配置Git程式碼倉庫時,有三項是必須配置的:
倉庫URL地址(Repository URL)
倉庫許可權校驗方式(Credentials)
以及當前Job需要構建的程式碼分支(Branches to build)

3.配置構建觸發器

比如常用的有:
定期進行構建(Build periodically)
根據提交進行構建(Build when a change is pushed to GitHub)
定期檢測程式碼更新,如有更新則進行構建(Poll SCM)

4.配置構建方式

常用的構建方式是根據構建物件的具體型別,安裝對應的外掛,然後採用相應的構建方式。
採用指令碼配置打包

5.構建後處理

上傳安裝包檔案,生成二維碼
展示二維碼圖片
收集編譯成果物(Artifacts)