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密碼的頁面,修改密碼後,然後登入即可