Jenkins建構企業CI/CD持續內建持續釋出平台
- 一、釋出形式
- 二、Jenkins概述
- 三、Jenkins 目标
- 四、Jenkins特性
- 五、Jenkins部署配置詳解
-
- 5.1 部署Git
- 5.2 JDK環境部署
- 5.3 部署Maven
- 5.4 部署TOMCAT
- 5.5 部署Jenkins
- 5.6 管理插件
- 5.7 Jenkins系統設定
- 5.8 SSH設定
- 5.9 建立任務
- 5.10 建構任務
- 六、總結一下
實作持續內建/持續釋出的産品:開發(git)–> git主庫 --> jenkins(git+jdk+tomcat+maven打包+測試)–>釋出到tomcat伺服器
CI:(continues intergration) 持續內建,代碼合并,建構,測試合并,不斷執行的過程,并對結果回報
CD:(continues Deloyments) 持續釋出 ,将代碼部署到測試環境,預生産環境
CD:(continues Delivery) 持續部署,将最終的産品釋出到生産環境,供使用者使用
一、釋出形式
平滑釋出
什麼叫平滑:在釋出的過程中不影響使用者的使用,系統不會因釋出而暫停對外服務,不會造成使用者短暫性無法通路;
灰階釋出
什麼叫灰階:釋出後讓部分使用者使用新版本,其它使用者使用舊版本,逐漸擴大影響範圍,最終達到全部更新的釋出方式 ;
- 灰階釋出與平滑釋出其實是關聯的。當伺服器的數量隻有一台的時候,不存在灰階釋出,一旦釋出了就是所有使用者都更新了;
- 是以這個時候隻有平滑釋出。當伺服器數量大于一台的時候,隻要每台伺服器都能達到平滑釋出的方式,
- 然後設定好需要釋出的伺服器占比數量,就可以實作灰階釋出了。
AB釋出
AB測試是為Web或App界面或流程制作兩個(A/B)或多個(A/B/n)版本,在同一時間次元,分别讓組成成分相同(相似)的訪客群組随機的通路這些版本,收集各群組的使用者體驗資料和業務資料,最後分析評估出最好版本正式采用;
二、Jenkins概述
- Jenkins是一個開源的、提供友好操作界面的持續內建(CI)工具,起源于Husdson(Husdson是商用的),主要用于持續、自動的建構/測試軟體項目、監控一些定時執行的任務。Jenkins用java語言編寫,可在Tomcat等流行的servlet容器中運作,也可獨立運作
- Jenkins通常與版本管理工具(SCM)、建構工具結合使用;常用的版本控制工具有SVN、GIT。Jenkins建構工具有Maven、Ant、Gradle
三、Jenkins 目标
- 監控軟體的開發流程
- 快速顯示問題
- 提高開發效率
- 過程控制
四、Jenkins特性
易于安裝:不需要安裝,不需要資料庫,隻需要通過java-jar jenkins.war或部署到一個servlet容器中
易于配置:所有的配置都可能通過jenkins提供的web界面完成,當然如果你喜歡,也可以通過手動修改xml檔案進行配置
測試報告:生成jUnit或TestNG的測試報告,內建RSS/E-mail通過RSS釋出建構結果或當建構完成時通過e-mail通知
檔案識别:jenkins能跟蹤每次建構生成哪些jar包以及使用那個版本的jar包
分布式建構: 支援jenkins能夠讓多台計算機一起建構/測試
插件支援:jenkins可以通過第三方插件進行擴充,也可以根據團隊需要開發插件
任務(job)和建構(build):任務:(job)是jenkins的一個執行計劃,是一系列操作的集合
工作流程圖

五、Jenkins部署配置詳解
環境準備
總共使用三台伺服器
使用Github官方伺服器
192.168.100.10部署Jenkins (4G記憶體)
192.168.100.20部署Tomcat伺服器
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm #均安裝epel擴充源
5.1 部署Git
一、安裝依賴包
二、Git官網下載下傳Git安裝包
三、安裝Git
[[email protected] ~]# tar -xvzf git-2.9.5.tar.gz
[[email protected] ~]# cd git-2.9.5
[[email protected] git-2.9.5]# make prefix=/usr/local/git all #編譯Git源代碼
[[email protected] git-2.9.5]# make prefix=/usr/local/git install #安裝
四、修改環境變量
[[email protected] git-2.9.5]# vim /etc/bashrc
PATH=$PATH:$HOME/bin:/usr/local/git/bin
[[email protected] git-2.9.5]# source /etc/bashrc
五、測試是否安裝成功
[[email protected] git-2.9.5]# git --version
git version 1.8.3.1
5.2 JDK環境部署
版本使用 jdk-8u291-linux-x64.tar.gz
注:不能使用jdk9和jdk10 與本版本不相容
一、解壓安裝
[[email protected] ~]# tar -xvzf jdk-8u291-linux-x64.tar.gz -C /usr/local/
[[email protected] ~]# cd /usr/local/
[[email protected] ~]# mv jdk1.8.0_291/ jdk
二、修改環境變量
[[email protected] ~]# vim /etc/bashrc
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
[[email protected] ~]# source /etc/bashrc
三、測試JDK
[[email protected] ~]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
5.3 部署Maven
一、下載下傳和解壓Maven
[[email protected] ~]# wget https://mirrors.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[[email protected] ~]# tar -xvzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/ #解壓到/usr/local
[[email protected] ~]# mv /usr/local/apache-maven-3.5.4/ /usr/local/maven #更名為maven
二、修改環境變量
[[email protected] ~]# vim /etc/bashrc
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/jdk #聲明環境變量
export PATH
[[email protected] ~]# source /etc/bashrc
三、測試Maven
[[email protected] ~]# mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: /usr/local/jdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
5.4 部署TOMCAT
一、解壓部署
[[email protected] ~]# wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz
[[email protected] ~]# tar -xvzf apache-tomcat-9.0.46.tar.gz -C /usr/local/
[[email protected] ~]# mv /usr/local/apache-tomcat-9.0.46/ /usr/local/tomcat
二、定義Tomcat所需環境變量
[[email protected] ~]# vim /etc/profile
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
[[email protected] ~]# source /etc/profile
三、啟動TOMCAT
四、測試TOMCAT
http://192.168.100.10:8080/
五、關閉TOMCAT
上傳代碼前記得關閉TOMCAT
5.5 部署Jenkins
一、官方下載下傳Jenkins
下載下傳2.296
二、部署Jenkins.war到TOMCAT下
附:jenkins忘記密碼重置步驟對照表
Jenkins重置 |
---|
關閉Tomcat /usr/local/tomcat/bin/shutdown.sh |
rm -rf /usr/local/tomcat/webapps/jenkins* |
rm -rf ~ /.jenkins* |
cp jenkins.war /usr/local/tomcat/webapps |
啟動tomcat即可通路jenkins |
三、啟動TOMCAT
注意:啟動TOMCAT會自動解壓webapps下的war包
四、登陸Jenkins
http://192.168.100.10:8080/jenkins
出現如下界面後将紅色一行複制進伺服器進行檢視
[[email protected] ~]# cat /root/.jenkins/secrets/initialAdminPassword
55b1bb2b1d164668b1def74e32240d89
點選安裝推薦插件
會自己安裝插件但是會發生報錯 需要手動下載下傳插件解決
安裝過程可能出現報錯,沒關系,點選重新下載下傳即可,如還是不行,請手動下載下傳安裝
建立使用者
點選儲存并完成
配置完成後的提示
http://192.168.100.10:8080/jenkins/
完成Jenkins前背景部署
5.6 管理插件
簡介:我們配置的是 git+maven方式的自動化部署 所有git和maven的相關插件是必須的 還有一個ssh基于機器間的檔案傳送
Git插件通路代碼倉庫 maven插件調用壓縮打包工具 ssh插件用于檔案傳輸
安裝過程請耐心等待
一、安裝插件 Deploy to container
- 作用:支援自動化将代碼部署到tomcat容器
- 安裝過程:系統管理 --> 插件管理 --> 可選插件 -->過濾Deploy to container --> 勾選,點選下面的按鈕直接安裝,時間可能較久,等待即可
選擇安裝後重新開機
二、安裝插件 Maven integration
- 作用:Jenkins利用Maven編譯,打包,所需插件
- 安裝過程:同第一個插件
CI/CD——Jenkins+Git建構企業CI/CD持續內建持續釋出平台一、釋出形式二、Jenkins概述三、Jenkins 目标四、Jenkins特性五、Jenkins部署配置詳解六、總結一下
三、安裝Git相關三個插件
- GitHub Authentication
- GitHub Branch Source
- GitHub Organization Folder
四、安裝插件 Publish Over SSH
5.7 Jenkins系統設定
與前方程式進行調用并關聯
注意:沒有強調的都設定為預設即可
路徑:系統管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目錄
一、找到全局工具箱
二、配置jdk目錄
配置JDK根目錄,注意不能是JDK9.0,切記
取消自動安裝勾選 選擇自己的安裝路徑
三、配置git目錄
四、配置Maven并儲存
五、點選全局儲存
六、關于重新開機Jenkins
http://192.168.100.10:8080/jenkins/restart
http://192.168.100.10:8080/jenkins/stop
http://192.168.100.10:8080/jenkins/reload
5.8 SSH設定
目的:(192.168.100.10) jinkens 伺服器上的maven将開發産生的*.war包。通過SSH自動推送到遠端tomcat伺服器上(192.168.100.20)。需要手工配置sshkey。配合自動化推送
192.168.100.10是Jenkins
192.168.100.20是tomcat網站伺服器,代表業務伺服器
一、Jenkins伺服器準備秘鑰認證
這裡的192.168.100.20是一台tomcat伺服器,什麼都不用安裝,接受代碼即可
[[email protected] ~]# ssh-keygen
[[email protected] ~]# ssh-copy-id 192.168.100.20
[[email protected] ~]# ssh 192.168.100.20
Last login: Tue Jun 8 22:37:05 2021 from 192.168.100.10
[[email protected] ~]#
二、在Jenkins伺服器準備秘鑰認證
[[email protected] ~]# cat .ssh/id_rsa
... #秘鑰略
三、進入Jenkins系統設定
如下圖配置完成後記得 儲存
5.9 建立任務
一、建立任務
二、定義名稱和類型
三、設定Maven
公有Git倉庫
① 設定描述
② 選擇版本控制器和倉庫位址
③ 設定觸發器(保持預設)
④ 設定建構(編譯打包)
⑤ 建構後操作
在建構設定中選擇:(send build artifacts over ssh)通過ssh發送建構檔案
關于建構後檔案的配置說明 | |
---|---|
SSH Server Name | 因為之前的配置會預設出現tomcat業務伺服器的名字 |
Source file | 建構之後,在jenkins伺服器上是可以自動看到war包的。(該路徑不需要建立)ls /root/.jenkins/jobs/testjob1/builds/target/*.war |
Remove prefix | 自動删除路徑字首(不需要建立路徑字首) |
Remove directory | tomcat業務伺服器上的路徑,需要提前在192.168.100.11(tomcat)上建立該目錄用來存放網站源代碼(需要背景建立) |
Exec command | tomcat(192.168.100.20)在接收到源碼之後的自定義操作比如:将源碼拷貝到網站的主目錄(/jenkins),并執行一些其他操作如重新開機伺服器等(或建立檔案touch 需要後天建立) |
⑥ 為TOMCAT伺服器建立相應檔案
tomacat(192.168.100.20)在接受到源碼之後的自定義動作
比如:将源碼拷貝到網站主目錄(/jenkins),并執行一些其他操作如重新開機伺服器等(或建立檔案touch)(需要背景建立)
[[email protected] ~]# mkdir /jenkins/sh #建立腳本目錄
[[email protected] ~]# vim /jenkins/sh/deploy.sh #建立待執行腳本,如果建構任務執行完成,此腳本也必須執行完成,否則認為失敗
touch /root/aaa.txt
touch /root/bbb.txt
[[email protected] ~]# chmod +x /jenkins/sh/deploy.sh #為腳本授權
關于建立腳本的解釋:
建立腳本的目的是為了驗證自動化建構之後能否執行一些我們自己的想法
因為目前為測試,不需要安裝網站環境,是以這裡以建立檔案進行代表
5.10 建構任務
一、立即建構
點選下方建構的任務
進入控制台輸出
等待大約5分鐘提示完成
如果出現error,檢查前邊配置
綠色為正常
二、檢視建構結果
[[email protected] ~]# ls /jenkins/war/
easy-springmvc-maven.war #此包為Github官網下載下傳的軟體包
[[email protected] ~]# ls #檢視腳本是否運作成功
aaa.txt bbb.txt
實驗完成!
六、總結一下
- Jenkins屬于較高端的技術,12k工資以上都要求掌握Jenkins
- 重點難點部分本人覺得在于Jenkins配置部分,還是多操作多積累吧,END