1. 程式人生 > 其它 >Jenkins——持續整合概念與部署gitlab

Jenkins——持續整合概念與部署gitlab

目錄

一、持續整合(CI)

1.1 流程


1.提交:流程的第一步,是開發者向程式碼倉庫提交程式碼。所有後面的步驟都始於原生代碼的一次提交(commit)
2.測試(第一輪):程式碼倉庫對commit操作配置了鉤子(hook),只要提交程式碼或者合併進主幹,就會跑自動化測試
3.構建:通過第一輪測試,程式碼就可以合併進主幹,就算可以交付了。交付後,就先進行構建(build),再進入第二輪測試。所謂構建,指的是將原始碼轉換為可以執行的實際程式碼,比如安裝依賴,配置各種資源(樣式表、JS指令碼、圖片)等等
4.測試(第二輪):構建完成,就要進行第二輪測試。如果第一輪已經涵蓋了所有測試內容,第二輪可以省略,當然,這時構建步驟也要移到第一輪測試前面
5.部署:過了第二輪測試,當前程式碼就是一個可以直接部署的版本((artifact)。將這個版本的所有檔案打包 ( tarfilename.tar * )存檔,發到生產伺服器
6.回滾:一旦當前版本發生問題,就要回滾到上一個版本的構建結果。最簡單的做法就是修改一下符號連結,指向上一個版本的目錄

1.2 持續整合的組成要素

1.一個自動構建過程,從檢出程式碼、編譯構建、執行測試、結果記錄、測試統計等都是自動完成的,無需人工干預
2.一個程式碼儲存庫,即需要版本控制軟體來保障程式碼的可維護性,同時作為構建過程的素材庫,一般使用SVN或Git
3.一個持續整合伺服器,Jenkins 就是一個配置簡單和使用方便的持續整合伺服器

1.3 持續整合的好處

1.降低風險,由於持續整合不斷去構建,編譯和測試,可以很早期發現問題,所以修復的代價就少
2.對系統健康持續檢查,減少釋出風險帶來的問題
3.減少重複性工作
4.持續部署,提供可部署單元包
5.持續交付可供使用的版本
6.增強團隊信心

二、Jenkins介紹

Jenkins是一款流行的開源持續整合(Continuous Integration)工具,廣泛用於專案開發,具有自動化構建.測試和部署等功能。官網:http://jenkins-ci.org/

2.1 Jenkins的特徵

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等

2.2 持續整合流程具體說明


1.首先,開發人員每天進行程式碼提交,提交到Git倉庫
2.然後,Jenkins作為持續整合工具,使用Git工具到Git倉庫拉取程式碼到整合伺服器,再配合JDK,Maven等軟體完成程式碼編譯,程式碼測試與審查,測試,打包等工作,在這個過程中每一步出錯,都重新再執行一次整個流程
3.最後,Jenkins把生成的jar或war包分發到測試伺服器或者生產伺服器,測試人員或使用者就可以訪問應用

2.3 搭建簡易jenkins服務

2.3.1 伺服器準備

名稱 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

2.3.2 Gitlab程式碼託管伺服器安裝

1.官網: https://about.gitlab.com/
2.GitLab是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務
3.GitLab和GitHub一樣屬於第三方基於Git開發的作品,免費且開源(基於MIT協議),與Github類似,可以註冊使用者,任意提交你的程式碼,新增SSHKey等等。不同的是,GitLab是可以部署到自己的伺服器上,資料庫等一切資訊都掌握在自己手上,適合團隊內部協作開發

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

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2)安裝依賴包

yum install -y policycoreutils openssh-server openssh-clients postfix

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

systemctl enable --now sshd

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

systemctl enable --now postfix

5)下載gitlab包並且安裝

線上下載安裝包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm

這邊我下載好了直接拉進/opt目錄中進行安裝:
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm


6)修改gitlab配置

vi /etc/gitlab/gitlab.rb

#修改23行,修改gitlab訪問地址和埠,預設為80,我們改為100
external_url 'http://192.168.80.16:100'
#修改1112行
nginx['listen_port']=100


7)過載配置及啟動gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

8)瀏覽器訪問測試

http://192.168.80.16:100

進去後看到以下修改管理員root密碼的頁面,修改密碼後,然後登入即可