工作流程:
開發人員在gitLab上打了一個tag
gitLab把tag事件推送到Jenkins
Jenkins 獲取tag源碼,編譯,打包,構建鏡像
Jenkins 複製jar包到遠程服務器
Jenkins 執行遠程腳本(停止老版本容器,刪除老版本容器,build 鏡像,run 新容器)
通知測試人員部署結果
環境要求:
git,jdk,maven,docker,jenkins
一、環境安裝:
1.1先安裝jdk,maven
https://blog.csdn.net/sopp_li/article/details/80446932
遠程wget下載不到文件,可到官網下載最新的。再配置
1.2 安裝git
https://www.cnblogs.com/gsliuruigang/p/7899803.html
1.3安裝 docker
http://www.runoob.com/docker/centos-docker-install.html
1.4 安裝jenkins
https://www.cnblogs.com/stulzq/p/9291237.html
docker 安裝 jenkins
https://www.cnblogs.com/stulzq/p/8627360.html
二、 jenkins 配置
插件下載
所需要的插件:
Maven Integration plugin
docker-build-step
Docker plugin
Gitlab Hook Plugin
GitLab Plugin
jenkins 系統配置:
2.1Maven項目配置
默認配置即可
2.2 Gitlab 配置
Credentials 添加:
gitlab的賬號、密碼
gitlab 有權限的api token
可提前在憑證》系統裏添加好
jenkins全局工具配置
2.3Maven 配置
選擇安裝的maven的目錄settings.xml路徑
2.4 Maven配置,新增一個,去掉自動安裝,選擇安裝的目錄
到止jenkins環境配置完成。
三、配置部署項目
在jenkin裏新建任務,構建一個maven項目
3.1源碼管理:
把git地址,填上,Credentials 如果之前未設置,添加一個
如果連接成功,不會報報錯
3.2構建觸發器
在gitlab的項目裏》設置》導入所有倉庫,webhooks配置,填上上邊的url,secret token
配置成功下邊會顯示 200狀態碼
3.3 構建build
構建成功後,在jenkins workspace文件目錄裏可看到下載下來的代碼,以及在target裏生成的jar包
Post Steps執行發佈,更新腳本
在遠程操作之前,先要配置發佈對象主機免密登錄
https://blog.csdn.net/fuck487/article/details/79361197
具體腳本:
echo '================打包完成,開始複製================' cd /var/lib/jenkins/workspace/gpsserver scp Dockerfile-gps root@hadoop1:/data/public/gpsserver/ scp server-gps/target/gpserver.jar root@hadoop1:/data/public/gpsserver/ echo '================複製文件完成================' ssh root@hadoop1 << remotessh echo '================進入主機hadoop1 shell================' cd /data/public/gpsserver echo '================停止容器 gpsserver================' sudo docker stop gpsserver echo '================刪除容器 gpsserver================' sudo docker rm gpsserver echo '================刪除鏡像 gpsserver:latest================' sudo docker rmi gpsserver:latest echo '================build 鏡像 gpsserver:latest================' sudo docker build -t gpsserver:latest -f ./Dockerfile-gps . echo '================運行容器 gpsserver================' sudo docker run --name=gpsserver -e JAVA_OPTS=' -Dspring.profiles.active=prod ' --restart always -it -d -p 10111:10111 -p 15678:15678 -v /data/public/gpsserver/logs:/logs gpsserver:latest echo "finished!" exit ###退出遠程機器 remotessh ###結尾哦 echo '================結束遠程啓動================'
至此 一個項目配置完成。
結語:
jenkins 只是一個工具,使用功能強大,有其他的使用方式:
1.生成docker鏡像,上傳到阿里雲或自搭鏡像服務器,遠程到主機shell進行pull,更新容器等。
2.可配合docker swarm,搭建集羣部署,只需改一下腳本即可。