使用Jenkins+gitlab自動化打包
簡介
Jenkins
Jenkins,一個用Java編寫的開源的持續整合工具,提供了軟體開發的持續整合服務,可監控並觸發持續重複的工作,具有開源,支援多平臺和外掛擴充套件,安裝簡單,介面化管理等特點。
Gitlab
GitLab是一個利用Ruby on Rails開發的開源應用程式,實現一個自託管的Git專案倉庫,可通過Web介面進行訪問公開的或者私人專案。
持續整合
持續整合, 簡稱CI(continuous integration).
CI作為敏捷開發重要的一步,其目的在於讓產品快速迭代的同時,儘可能保持高質量.
CI一種可以增加專案可見性,降低專案失敗風險的開發實踐。其每一次程式碼更新,都要通過自動化測試來檢測程式碼和功能的正確性,只有通過自動測試的程式碼才能進行後續的交付和部署.
CI 是團隊成員間(產研測)更好地協調工作,更好的適應敏捷迭代開發,自動完成減少人工干預,保證每個時間點上團隊成員提交的程式碼都能成功整合的,可以很好的用於對Android/iOS專案的打包.
安裝
安裝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)