相關(guān)概念
Jenkins
- Jenkins宗侦,一個用Java編寫的開源的持續(xù)集成工具愚臀,提供了軟件開發(fā)的持續(xù)集成服務(wù),可監(jiān)控并觸發(fā)持續(xù)重復(fù)的工作矾利,具有開源姑裂,支持多平臺和插件擴展,安裝簡單男旗,界面化管理等特點舶斧。更多介紹參考[維基](https://en.wikipedia.org/wiki/Jenkins_(software)介紹.
Gitlab
- GitLab是一個利用Ruby on Rails開發(fā)的開源應(yīng)用程序察皇,實現(xiàn)一個自托管的Git項目倉庫茴厉,可通過Web界面進行訪問公開的或者私人項目,更多介紹參考維基介紹.
持續(xù)集成
- 持續(xù)集成, 簡稱CI(continuous integration).
- CI作為敏捷開發(fā)重要的一步什荣,其目的在于讓產(chǎn)品快速迭代的同時矾缓,盡可能保持高質(zhì)量.
- CI一種可以增加項目可見性,降低項目失敗風(fēng)險的開發(fā)實踐稻爬。其每一次代碼更新嗜闻,都要通過自動化測試來檢測代碼和功能的正確性,只有通過自動測試的代碼才能進行后續(xù)的交付和部署.
- CI 是團隊成員間(產(chǎn)研測)更好地協(xié)調(diào)工作桅锄,更好的適應(yīng)敏捷迭代開發(fā)琉雳,自動完成減少人工干預(yù)样眠,保證每個時間點上團隊成員提交的代碼都能成功集成的,可以很好的用于對Android/iOS項目的打包.
平臺搭建
Jenkins安裝和啟動
官網(wǎng): https://jenkins.io/index.html
下載: http://mirrors.jenkins-ci.org/war/latest/jenkins.war
安裝:
- 依賴于Java環(huán)境翠肘,首先安裝和配置Java環(huán)境
- 到官網(wǎng)下載Jenkins,雙擊安裝吹缔,如果是Mac電腦,會自動生成全局變量jenkins
- 修改參數(shù): jenkins + 相關(guān)參數(shù)锯茄,如jenkins --httpPort=8888 #更換端口號厢塘,當(dāng)默認端口8080被占用,或指定特定端口時肌幽。
啟動
- 手動啟動: java -jar jenkins.war
- 后臺啟動(默認端口): nohup java -jar jenkins.war &
- 后臺啟動(指定端口): nohup java -jar jenkins.war -httpPort=88 &
- 后臺啟動(HTTPS): nohup java -jar jenkins.war -httpsPort=88 &
- 瀏覽:http://localhost:8080/ , localhost可配置
Jenkins插件安裝
操作: Manage Jenkins -> Manage Plugins -> Available -> Search -> Click to install晚碾,如下圖所示
實用插件
- Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
- Git插件: Git plugin
- 簽名證書管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
- FTP插件: Publish over FTP
- 腳本插件: Post-Build Script Plug-in
- 獲取倉庫提交的commit log: Git Changelog Plugin
- 自定義全局變量: Environment Injector Plugin
- 自定義郵件插件: Email Extension Plugin
- 獲取當(dāng)前登錄用戶信息: build-user-vars-plugin
- 顯示代碼測試覆蓋率報表: Cobertura Plugin
來展示生成的單元測試報表,支持一切單測框架喂急,如junit格嘁、nosetests等: Junit Plugin
Jenkins系統(tǒng)設(shè)置
操作: Manage Jenkins -> Configure System
- Jenkins內(nèi)部shell UTF-8 編碼設(shè)置,如下圖所示
- Jenkins Location和Email設(shè)置廊移,如下圖所示
- E-mail Notification糕簿,設(shè)置如下如所示
Jenkins Jobs配置
Jobs基礎(chǔ)配置
配置編譯參數(shù)
例如,如果需要打包者自行選擇打包類型狡孔,如需要編譯Release/Debug/Test等不同版本的包懂诗,那需要配置Jobs的編譯參數(shù),配置方法如下圖所示:
你還可以配置一些其它參數(shù)苗膝,例如:
配置完后殃恒,build界面中就會出現(xiàn),如下如所示:
配置匿名用戶權(quán)限
后面打包的應(yīng)用發(fā)布時辱揭,如果懶得自己搭建服務(wù)器离唐,就用Jenkins的,但發(fā)布出去的鏈接需要登錄才能訪問问窃,這時候你可以設(shè)置匿名用戶的訪問權(quán)限亥鬓,這樣匿名用戶可以下載訪問你提供的應(yīng)用鏈接了,非常取巧的方法域庇,如下圖:
Jobs源碼庫配置(Gitlab為例)
配置SSH
操作: Manage Jenkins -> Credentials -> Global credentials (unrestricted) -> Add Credentials
1.本機生成SSH:ssh-keygen -t rsa -C "Your email" 嵌戈, 生成過程中需設(shè)置密碼,最終生成id_rsa和id_rsa.pub(公鑰)
2.本機添加秘鑰到SSH:ssh-add 文件名(需輸入管理密碼)
3.Gitlab上添加公鑰:復(fù)制id_rsa.pub里面的公鑰添加到Gitlab
4.Jenkins上配置密鑰到SSH:復(fù)制id_rsa.pub里面的公鑰添加到Jenkins(private key選項)
新建Job
在Jenkins中较剃,所有的任務(wù)都是以"Job"為單位的咕别。在進行操作前,你需要新建一個Job写穴,Job新建比較簡單,只需要在Jenkins管理的首頁左側(cè)雌贱,點擊“New Job”啊送,一般選擇free-style software project偿短,再輸入Job的名字即可。
配置Gitlab
在新建的任務(wù)(Jobs)中馋没,Gitlab源碼配置如下圖:需要輸入git倉庫和build分支昔逗,公鑰使用上面配置SSH生成的公鑰。
Jobs觸發(fā)條件配置
Jenkins支持多種觸發(fā)器配置篷朵,包括:
定期進行構(gòu)建(Build periodically)勾怒,定時器使用示例如下:
H(25-30) 18 1-5: 工作日下午6點25到30分之間進行build
H 23 1-5:工作日每晚23:00至23:59之間的某一時刻進行build
H(0-29)/15 :前半小時內(nèi)每隔15分鐘進行build(開始時間不確定)
H/20 :每隔20分鐘進行build(開始時間不確定)根據(jù)提交進行構(gòu)建(Build when a change is pushed to GitHub)
定期檢測代碼更新,如有更新則進行構(gòu)建(Poll SCM)
Jobs構(gòu)建方式/編譯 配置
Jenkins支持多種編譯配置方式声旺,包括:
- Xcode: iOS編譯配置(安裝Xcode integration插件)
- Invoke Gradle script: Android編譯配置(安裝Gradle plugin插件)
- Exceute Shell: 腳本方式
Jobs構(gòu)建后處理
Artifacts和郵件通知配置笔链,參考下圖
可借助Email Extension Plugin 插件進行詳細配置,具體可參考此文