來源:安全隨筆 連結:https://mp.weixin.qq.com/s/KVc4IFky1z7kZn-7bz79DQ
一、 CI/CD 環境介紹
本次要實作如下效果,開發人員完成功能開發並送出程式碼到gitlab倉庫,jenkins自動完成拉取程式碼、編譯構建、程式碼掃描(sonarqube)、打包,再自動化完成部署到Tomcat伺服器提供存取。
環境準備三台Centos7.6機器:
伺服器
|
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以上,三者之間都是有依賴關系的。
看下效果:
自動git拉取程式碼:
maven自動構建:
sonarqube自動掃描:
自動部署:
sonarqube掃描結果:
二、CI/CD平台搭建
1)安裝gitlab
1. 安裝相關依賴
yum -y install policycoreutils openssh-server openssh-clients postfix
2. 啟動ssh服務&設定為開機啟動
systemctl enable sshd && sudo systemctl start sshd
3. 設定postfix開機自啟,並啟動,postfix支持gitlab發信功能
systemctl enable postfix && systemctl start postfix
4. 開放ssh以及http服務,然後重新載入防火墻列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果關閉防火墻就不需要做以上配置
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密碼的頁面,修改密碼後,然後登入即可
添加組、建立使用者、建立計畫
這樣使用者zhangsan就擁有了itheima_group組的許可權。接下來使用zhangsan使用者進入組建立一個新的計畫,計畫名稱:hello_demo
該計畫倉庫地址是:
http://192.168.220.170:82/itheima_group/hello-demo.git
[email protected]: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
註意:本伺服器把防火墻關閉了,如果開啟防火墻,需要在防火墻添加埠
5)獲取並輸入admin帳戶密碼
cat /var/lib/jenkins/secrets/initialAdminPassword
6)跳過外掛程式安裝
因為Jenkins外掛程式需要連線預設官網下載,速度非常慢,而且經過會失敗,所以我們暫時先跳過外掛程式安裝
Jenkins安裝完成後,需要替換外掛程式更新源:需要執行以下步驟:
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替換為清華大學的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程式碼需要使用憑證的方式拉取:
再去添加gitlab認證的憑證:
還要再jenkins伺服器上安裝git工具和git外掛程式:
在jenkins上準備一個計畫:
到這裏,jenkins拉取gitlab程式碼的準備條件都ok了。開始與gitlab整合吧。
保存,然後回到計畫點「
Build Now
」:
如上圖,jenkins自動去gitlab拉取程式碼,並且將程式碼工程放在如上路徑下:
好了,到這裏說明jenkins已經安裝成功了,也安裝了相關的外掛程式和配置了jenkins的基本配置,並且完成了與gitlab的整合,完成構建自動觸發程式碼拉取到本地。
3)部署Tomcat伺服器
把Tomcat壓縮包上傳到192.168.66.102伺服器
yum install java-1.8.0-openjdk* -y #安裝JDK(已完成)
tar -xzf apache-tomcat-8.5.47.tar.gz #解壓
mkdir -p /opt/tomcat #建立目錄
mv /root/apache-tomcat-8.5.47/* /opt/tomcat #移動檔
/opt/tomcat/bin/startup.sh #啟動tomcat
註意:伺服器已經關閉了防火墻,所以可以直接存取Tomcat啦,地址為:http://192.168.66.102/8080
tomcat已經部署成功!
4)配置jenkins與tomcat整合,完成CD持續部署功能
同樣的,也是需要在jenkins上做大量的配置:
Maven安裝和配置
tar -xzf apache-maven-3.6.2-bin.tar.gz #解壓
mkdir -p /opt/maven #建立目錄
mv apache-maven-3.6.2/* /opt/maven #移動檔
配置環境變量
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全域工具配置,關聯JDK和Maven
添加Jenkins全域變量
準備好後,來測試Maven構建是否生效,還是用剛剛的計畫:hello_web
可以看到,計畫構建成功。可以去伺服器上看到war包已經生成。
war可以自動編譯,還差自動部署了,有需要配置一些步驟:
安裝 Deploy to container外掛程式
添加Tomcat憑證
jenkins計畫配置構建後操作
保存配置,點「Build Now」:
可以看到計畫成功部署,可以正常存取。
<END>
點這裏👇關註我,記得標星呀~
感謝你的分享,點贊,在看三連