CICD實戰——使用Jenkins實現自動化部署和環境隔離

CICD實戰——使用Jenkins實現自動化部署和環境隔離

安裝

jdk

1.查看是否安裝了jdk

[root@10-0-59-231 data]# java -version # 查看是否安裝jdk,沒有則要安裝
-bash: java: 未找到命令

2.搜索可用包

yum search java |grep -i --color JDK

3.安裝jdk

yum install java-1.8.0-openjdk* # 安裝1.8 openjdk

4.查看

java -version

#輸出
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

PS:yum自動配置了環境變量,可以通過 vim /etc/profile 查看

jenkins

1.centos 7 下安裝

yum install jenkins

2.更改默認端口號和git clone代碼存放目錄

vim /etc/sysconfig/jenkins
JENKINS_PORT="8088"             # 默認8080
JENKINS_HOME="/data/jenkins"    # 默認 /var/lib/jenkins
systemctl daemon-reload # 使得配置生效

3.啓動

systemctl restart jenkins # 重啓
chkconfig jenkins on      # 開機啓動

配置

1.新建任務
2.輸入名字,選擇自由風格軟件。
在這裏插入圖片描述
3.General,勾選丟棄舊的構建
在這裏插入圖片描述

4.設置代碼倉庫。我們使用的gitlab,所以勾選Git,然後貼入代碼倉庫地址,Credentials添加一個有權限的用戶。
Branch Specifier:默認是從Master拉代碼編譯,我們一般發佈是release,所以這裏使用 release 分支。
在這裏插入圖片描述

5.構建觸發器。這個不用設置,用不到。
6.構建環境。暫時用不到,跳過。
7.構建。點擊“執行shell“,調用build.sh腳本完成源代碼的編譯工作,具體見下一節。
在這裏插入圖片描述

8.構建後。點擊“Send build artifacts over SSH”,通過ssh把編譯的包發佈到遠程機器上,具體見後面。
在這裏插入圖片描述

構建

1.構建腳本。

cd ${WORKSPACE} && cd server/paas_build
chmod 777 build_db_proxy_server.sh
./build_db_proxy_server.sh
cd ../
echo 'tar ${pwd}/online.base.im/'
tar -czvf online.base.im.tar.gz online.base.im/

在這裏插入圖片描述

這裏打包壓縮一下,便於後續的拷貝分發。

2.測試構建。
在這裏插入圖片描述
在這裏插入圖片描述

點擊立即構建,然後在下面可以看到構建進度,再點擊,查看具體構建結果。
在這裏插入圖片描述

分發

新增SSH Servers

PS:本地編譯好程序後,還需要拷貝到的目標機器上運行,才完成整套流程。
點擊系統管理->系統設置,拉到最下面。找到SSH Servers,點擊後面的新增。
在這裏插入圖片描述
輸入相關信息,其中Remote Directory,需要預先創建。推薦在/data/apps等目錄。該目錄代表了,後續把文件拷貝到機器上的根目錄。然後點擊高級設置密碼後,點擊“Test Connfiguration”,確保配置沒問題。
在這裏插入圖片描述
如果有多臺機器,多次add即可。

發佈腳本

1.構建完成後,需要通過腳本執行一些安裝動作,點擊“Send build artifacts over SSH”。
2.選擇一個服務器。相對於WorkSpace,我的包在server/online.base.im.tar.gz位置。
在這裏插入圖片描述
Remove prefix:需要移除的前綴,如果不設置。假設SSH Servers設置的Remote Directory爲/data/webapps,則該壓縮包拷貝後的路徑爲:/data/webapps/server/online.base.im.tar.gz。
Exec command:需要執行的命令。執行前請設置一下當前工作目錄,比如cd /data/webapps。

附腳本:

kill -9 $(pidof db_proxy_server) # 停止進程
sleep 5    # 等一會
cd /data/webapps/ 
# 備份原程序
mv online.base.imdbproxyserver.service online.base.imdbproxyserver.service.$(date "+%Y%m%d")${BUILD_NUMBER}
tar -zxvf online.base.im.tar.gz
rm -rf online.base.im.tar.gz
mv online.base.im online.base.imdbproxyserver.service
cd online.base.imdbproxyserver.service
cd db_proxy_server
mv libhiredis.so.0.13 libhiredis.so.0.12
ln -s /data/webconf/dbproxyserver.xml dbproxyserver.xml
cd ../
chmod 777 *.sh
./restart.sh db_proxy_server

重新構建

在這裏插入圖片描述

此時要不停的調整腳本,直到顯示成藍色的球爲止,代表中間過程一切順利,沒有錯誤。然後就實現了:

  1. 從gitlab自動拉取最新代碼
  2. 編譯
  3. 自動部署集羣

看一下效果:
在這裏插入圖片描述
在這裏插入圖片描述
PS:如果需要發佈到多個機器,在“構建後”裏面在添加一個SSH Server即可。

關於

CSDN關於作者
推薦下自己的開源IM,純Golang編寫:

CoffeeChat:
https://github.com/xmcy0011/CoffeeChat
opensource im with server(go) and client(flutter+swift)

參考了TeamTalk、瓜子IM等知名項目,包含服務端(go)和客戶端(flutter+swift),單聊和機器人(小微、圖靈、思知)聊天功能已完成,目前正在研發羣聊功能,歡迎對golang和跨平臺開發flutter技術感興趣的小夥伴Star加關注。

————————————————
版權聲明:本文爲CSDN博主「許非」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xmcy001122/article/details/105665732

參考:https://www.jianshu.com/p/5f671aca2b5a
參考:http://www.linuxboy.net/linuxjc/144365.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章