超詳細的jenkins持續集成工作原理、功能、部署方式等介紹
概述
今天簡單整理了一下jenkins的一些概念性內容,歸納如下:
1、概念
jenkins是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專注於更為重要的業務邏輯實現上。同時 Jenkins 能實時監控集成中存在的錯誤,提供詳細的日志文件和提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩定性。
Jenkins可以構建一個自動化的持續集成環境可以使用它來“自動化”編譯、打包、分發部署應用,它兼容ant、maven、gradle等多種第三方構建工具,同時與svn、git能無縫集成,也支持直接與知名源代碼托管網站,如github、bitbucket直接集成。

2、Jenkins的功能

1. 定時拉取代碼並編譯
2. 靜態代碼分析
3. 定時打包發布測試版
4. 自定義操作,如跑單元測試等
5. 出錯提醒

3、原理

這里是選擇Gitlab作為git server。Gitlab的功能和Github差不多,但是是開源的,可以用來搭建私有git server,也提供非常強大的web GUI,比如開發者互相review源代碼的時候就會很方便。系統的工作流程大概分為以下幾步:
1> 開發者將新版本push到git server (Gitlab)。
2> Gitlab隨后觸發jenkins master結點進行一次build。(通過web hook或者定時檢測)
3> jenkins master結點將這個build任務分配給若干個注冊的slave結點中的一個,這個slave結點根據一個事先設置好的腳本進行build。這個腳本可以做的事情很多,比如編譯,測試,生成測試報告等等。這些原本需要手動完成的任務都可以交給jenkins來做。
4> 我們在build中要進行編譯,這里使用了分布式編譯器distcc來加快編譯速度。
jenkins的工作原理是先將源代碼從gitlab中拷貝一份到本地,然后根據設置的腳本進行build。我們可以看出,整個系統的關鍵就是那個build腳本,用來告訴jenkins在一次集成中需要執行的任務。
不過我之后是用的Github作為git server。但其實差不多。
4、部署方式
1、jenkins觸發式構建:
用於開發環境部署,開發人員push代碼或者合並代碼到gitlab項目的master分支,jenkins就部署代碼到對應服務器。
2、jenkins參數化構建:
用於測試環境預上線環境部署,開發push代碼或者合並代碼到gitlab項目的master分支之后,並不會部署代碼,而是需要登錄到jenkins的web界面,點擊構建按鈕,傳入對應的參數(比如參數需要構建的tag,需要部署的分支)然后才會部署。
3、jenkins定時構建:
用於APP自動打包,定時構建是在參數化構建的基礎上添加的,開發人員可以登錄jenkins手動傳入tag進行打包,如果不手動打包,那么jenkins就每天凌晨從gitlab拉取最新的APP代碼打包。
5、持續集成的分類

1. 持續集成:指程序員在代碼的開發工程中,可以頻繁的將代碼部署到主干上,並進行自動化測試
2. 持續交互:指在持續集成的基礎之上,將代碼部署到線上測試環境
3. 持續部署:指在持續交互的基礎之上,將要部署的代碼實現自動部署,包括持續交互、持續部署