一、CI/CD環(huán)境介紹
本次要實現(xiàn)如下效果,開發(fā)人員完成功能開發(fā)并提交代碼到gitlab倉庫,jenkins自動完成拉取代碼、編譯構(gòu)建、代碼掃描(sonarqube)、打包,再自動化完成部署到Tomcat服務(wù)器提供訪問。
環(huán)境準備三臺Centos7.6機器:
服務(wù)器 | IP地址 | 配置 | 包含功能及版本 |
Gitlab | 192.168.220.170 | 2核2G | Gitlab:12.4.2 (393a5bdafa2) |
Jenkins | 192.168.220.172 | 2核2G | Jenkins:2.364 Maven:3.8.6 Sonarqube:7.9.6 (build 41879) JDK:11.0.16 Git:1.8.3.1 |
Tomcat | 192.168.220.173 | 2核2G | Tomcat:8.5.82 JDK:1.8.0_342 |
部署過程中踩過不少坑,這套Jenkins因為需要安裝較多插件,而Jenkins上的插件版本要求比較嚴格,所以最好實驗情況下直接安裝最新的Jenkins版本,這樣上面的插件基本都能安裝,包括Pipeline、gitlab、SSH Server等。不然遇到Jenkins插件安裝不順暢對新人挺麻煩的。
Jenkins安裝最新版,那JDK也必須11以上,那也就要求sonarqube也得7.8以上,三者之間都是有依賴關(guān)系的。
看下效果:
自動git拉取代碼:
maven自動構(gòu)建:
sonarqube自動掃描:
自動部署:
sonarqube掃描結(jié)果:
二、CI/CD平臺搭建
1)安裝gitlab
1.?安裝相關(guān)依賴
yum?-y?install?policycoreutils?openssh-server?openssh-clients?postfix
2.?啟動ssh服務(wù)&設(shè)置為開機啟動
systemctl?enable?sshd?&&?sudo?systemctl?start?sshd
3.?設(shè)置postfix開機自啟,并啟動,postfix支持gitlab發(fā)信功能
systemctl?enable?postfix?&&?systemctl?start?postfix
4.?開放ssh以及http服務(wù),然后重新加載防火墻列表
firewall-cmd?--add-service=ssh?--permanent
firewall-cmd?--add-service=http?--permanent
firewall-cmd?--reload
如果關(guān)閉防火墻就不需要做以上配置
5.?下載gitlab包,并且安裝
在線下載安裝包:
wget?https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x
86_64.rpm
安裝:
rpm?-i?gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
6.?修改gitlab配置
vi?/etc/gitlab/gitlab.rb
修改gitlab訪問地址和端口,默認為80,我們改為82
external_url?'http://192.168.220.170:82'
nginx['listen_port']?=?82
7.?重載配置及啟動gitlab
gitlab-ctl?reconfigure
gitlab-ctl?restart
8.?把端口添加到防火墻
firewall-cmd?--zone=public?--add-port=82/tcp?--permanent
firewall-cmd?--reload
啟動成功后,看到以下修改管理員root密碼的頁面,修改密碼后,然后登錄即可
添加組、創(chuàng)建用戶、創(chuàng)建項目
這樣用戶zhangsan就擁有了itheima_group組的權(quán)限。接下來使用zhangsan用戶進入組創(chuàng)建一個新的項目,項目名稱:hello_demo
該項目倉庫地址是:
http://192.168.220.170:82/itheima_group/hello-demo.git
git@192.168.220.170:itheima_group/hello-demo.git
接下來將本地的maven工程代碼上傳到gitlab倉庫,上傳成功后如下:
到這gitlab就準備好了!
2)安裝jenkins
1)安裝JDK
Jenkins需要依賴JDK,所以先安裝JDK11
yum?install?-y?java-11-openjdk*
安裝目錄為:/usr/lib/jvm
2)獲取jenkins安裝包
wget?-O?/etc/yum.repos.d/jenkins.repo?https://pkg.jenkins.io/redhat/jenkins.repo?--no-check-certificate
rpm?--import?https://pkg.jenkins.io/redhat/jenkins.io.key
yum?install?jenkins
3)啟動Jenkinssystemctl?start?jenkins
4)打開瀏覽器訪問
http://192.168.220.172:8080
注意:本服務(wù)器把防火墻關(guān)閉了,如果開啟防火墻,需要在防火墻添加端口
5)獲取并輸入admin賬戶密碼
cat?/var/lib/jenkins/secrets/initialAdminPassword
6)跳過插件安裝
因為Jenkins插件需要連接默認官網(wǎng)下載,速度非常慢,而且經(jīng)過會失敗,所以我們暫時先跳過插件安裝
第二種安裝:
?Jenkins本地安裝:下載jenkins.war包,放在tomcat的webapps下,運行tomcat。
Jenkins安裝完成后,需要替換插件更新源:需要執(zhí)行以下步驟:
sed?-i?'s/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g'?default.json?&&?sed?-i?'s/https:\/\/www.google.com/https:\/\/www.baidu.com/g'?default.json
在Manage Jenkins -- Plungin Manager -- Update Site:將url替換為清華大學(xué)的url:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
提交后,在瀏覽器輸入:http://192.168.220.172.:8080/restart重啟jenkins生效。
Jenkins準備好后,就是與gitlab集成,完成代碼自動拉取的動作了。但是需要先準備如下:
安裝Credentials Binding插件
要在Jenkins使用憑證管理功能,需要安裝Credentials Binding插件,拉取gitlab代碼需要使用憑證的方式拉?。?/p>
再去添加gitlab認證的憑證:
還要再jenkins服務(wù)器上安裝git工具和git插件:
在jenkins上準備一個項目:
到這里,jenkins拉取gitlab代碼的準備條件都ok了。開始與gitlab集成吧。
保存,然后回到項目點“Build Now”:
如上圖,jenkins自動去gitlab拉取代碼,并且將代碼工程放在如上路徑下:
好了,到這里說明jenkins已經(jīng)安裝成功了,也安裝了相關(guān)的插件和配置了jenkins的基本配置,并且完成了與gitlab的集成,完成構(gòu)建自動觸發(fā)代碼拉取到本地。
3)部署Tomcat服務(wù)器
把Tomcat壓縮包上傳到192.168.66.102服務(wù)器
yum?install?java-1.8.0-openjdk*?-y?#安裝JDK(已完成)
tar?-xzf?apache-tomcat-8.5.47.tar.gz?#解壓
mkdir?-p?/opt/tomcat?#創(chuàng)建目錄
mv?/root/apache-tomcat-8.5.47/*?/opt/tomcat?#移動文件
/opt/tomcat/bin/startup.sh?#啟動tomcat
?
注意:服務(wù)器已經(jīng)關(guān)閉了防火墻,所以可以直接訪問Tomcat啦,地址為:http://192.168.66.102/8080
tomcat已經(jīng)部署成功!
4)配置jenkins與tomcat集成,完成CD持續(xù)部署功能
同樣的,也是需要在jenkins上做大量的配置:
Maven安裝和配置
tar?-xzf?apache-maven-3.6.2-bin.tar.gz?#解壓
mkdir?-p?/opt/maven?#創(chuàng)建目錄
mv?apache-maven-3.6.2/*?/opt/maven?#移動文件
配置環(huán)境變量
export?JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export?MAVEN_HOME=/opt/maven
export?PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
Jenkins全局工具配置,關(guān)聯(lián)JDK和Maven
添加Jenkins全局變量
準備好后,來測試Maven構(gòu)建是否生效,還是用剛剛的項目:hello_web
可以看到,項目構(gòu)建成功??梢匀シ?wù)器上看到war包已經(jīng)生成。
war可以自動編譯,還差自動部署了,有需要配置一些步驟:
安裝 Deploy to container插件
添加Tomcat憑證
jenkins項目配置構(gòu)建后操作
保存配置,點“Build Now”:
文章來源:http://www.zghlxwxcb.cn/news/detail-839228.html
可以看到項目成功部署,可以正常訪問。文章來源地址http://www.zghlxwxcb.cn/news/detail-839228.html
到了這里,關(guān)于基于 Jenkins 搭建一套 CI/CD 系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!