天天看點

Jenkins——持續內建概念與部署gitlab

目錄

一、持續內建(CI)

1.1 流程

1.2 持續內建的組成要素

1.3 持續內建的好處

二、Jenkins介紹

2.1 Jenkins的特征

2.2 持續內建流程具體說明

2.3 搭建簡易jenkins服務

2.3.1 伺服器準備

2.3.2 Gitlab代碼托管伺服器安裝

1)關閉防火牆和安全功能

2)安裝依賴包

3)啟動ssh服務并設定為開機啟動

4)設定postfix開機自啟,讓postfix支援gitlab發信功能

5)下載下傳gitlab包并且安裝

6)修改gitlab配置

7)重載配置及啟動gitlab

8)浏覽器通路測試

Jenkins——持續內建概念與部署gitlab

1.送出:流程的第一步,是開發者向代碼倉庫送出代碼。所有後面的步驟都始于本地代碼的一次送出(commit)

2.測試(第一輪):代碼倉庫對commit操作配置了鈎子(hook),隻要送出代碼或者合并進主幹,就會跑自動化測試

3.建構:通過第一輪測試,代碼就可以合并進主幹,就算可以傳遞了。傳遞後,就先進行建構(build),再進入第二輪測試。所謂建構,指的是将源碼轉換為可以運作的實際代碼,比如安裝依賴,配置各種資源(樣式表、JS腳本、圖檔)等等

4.測試(第二輪):建構完成,就要進行第二輪測試。如果第一輪已經涵蓋了所有測試内容,第二輪可以省略,當然,這時建構步驟也要移到第一輪測試前面

5.部署:過了第二輪測試,目前代碼就是一個可以直接部署的版本((artifact)。将這個版本的所有檔案打包 ( tarfilename.tar * )存檔,發到生産伺服器

6.復原:一旦目前版本發生問題,就要復原到上一個版本的建構結果。最簡單的做法就是修改一下符号連結,指向上一個版本的目錄

1.一個自動建構過程,從檢出代碼、編譯建構、運作測試、結果記錄、測試統計等都是自動完成的,無需人工幹預

2.一個代碼存儲庫,即需要版本控制軟體來保障代碼的可維護性,同時作為建構過程的素材庫,一般使用SVN或Git

3.一個持續內建伺服器,Jenkins 就是一個配置簡單和使用友善的持續內建伺服器

1.降低風險,由于持續內建不斷去建構,編譯和測試,可以很早期發現問題,是以修複的代價就少

2.對系統健康持續檢查,減少釋出風險帶來的問題

3.減少重複性工作

4.持續部署,提供可部署單元包

5.持續傳遞可供使用的版本

6.增強團隊信心

Jenkins——持續內建概念與部署gitlab

1.開源的Java語言開發持續內建工具,支援持續內建,持續部署

2.易于安裝部署配置:可通過yum安裝,或下載下傳war包以及通過docker容器等快速實作安裝部署,可友善web界面配置管理

3.消息通知及測試報告:內建RSS/E-mail通過RSs釋出建構結果或當建構完成時通過e-mail通知,生成JUnit/TestNG測試報告

4.分布式建構:支援Jenkins能夠讓多台計算機一起建構/測試

5.檔案識别: Jenkins能夠跟蹤哪次建構生成哪些jar,哪次建構使用哪個版本的jar等

6.豐富的插件支援:支援擴充插件,你可以開發适合自己團隊使用的工具,如git,svn,maven、docker等

Jenkins——持續內建概念與部署gitlab

1.首先,開發人員每天進行代碼送出,送出到Git倉庫

2.然後,Jenkins作為持續內建工具,使用Git工具到Git倉庫拉取代碼到內建伺服器,再配合JDK,Maven等軟體完成代碼編譯,代碼測試與審查,測試,打包等工作,在這個過程中每一步出錯,都重新再執行一次整個流程

3.最後,Jenkins把生成的jar或war包分發到測試伺服器或者生産伺服器,測試人員或使用者就可以通路應用

名稱

ip

軟體

代碼托管伺服器

192.168.80.16

Gitlab-12.4.2

持續內建伺服器

192.168.80.15

Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git,SonarQube

應用測試伺服器

192.168.80.14

JDK1.8,Tomcat8.5

1.官網: https://about.gitlab.com/

2.GitLab是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務

3.GitLab和GitHub一樣屬于第三方基于Git開發的作品,免費且開源(基于MIT協定),與Github類似,可以注冊使用者,任意送出你的代碼,添加SSHKey等等。不同的是,GitLab是可以部署到自己的伺服器上,資料庫等一切資訊都掌握在自己手上,适合團隊内部協作開發

Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab
Jenkins——持續內建概念與部署gitlab