超詳細的jenkins持續集成工作原理、功能、部署方式等介紹

2019-08-29     波波說運維

概述

今天簡單整理了一下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. 持續部署:指在持續交互的基礎之上,將要部署的代碼實現自動部署,包括持續交互、持續部署


後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~


文章來源: https://twgreatdaily.com/zh-cn/fzY18mwBJleJMoPMHixI.html