jenkins+Docker+springcloud微服务持续集成
流程說明
本地部署
微服務(wù)是可以獨(dú)立部署的,如果不借助spring-boot-maven插件,package出來的jar包是不能運(yùn)行的。
借助spring-boot-maven插件package出來的jar包已經(jīng)內(nèi)嵌了tomcat相關(guān)的jar,可以獨(dú)立運(yùn)行(java -jar):
使用Dockerfile制作微服務(wù)鏡像
vi Dockerfile
- –build-arg JAR_FILE=xxx 設(shè)置參數(shù)的值
- eureka:v1:eureka是鏡像名稱,v1是標(biāo)簽tag
docker build日志查看:
docker run創(chuàng)建容器驗(yàn)證一下:
docker logs -f 容器ID查看容器日志
Harbor
簡(jiǎn)介
安裝
創(chuàng)建用戶和項(xiàng)目
給tensquare項(xiàng)目添加成員:
上傳鏡像到Harbor
由于docker并不信任harbor倉(cāng)庫(kù)地址,貿(mào)然上傳到harbor會(huì)報(bào)錯(cuò):
vi /etc/docker/daemon.json 信任harbor倉(cāng)庫(kù)地址
systemctl restart docker 重啟docker
上傳到私有倉(cāng)庫(kù),需要賬號(hào)密碼:不然會(huì)報(bào)錯(cuò)
所以需要登錄harbor:
此時(shí)就會(huì)成功push:
查看harbor倉(cāng)庫(kù),就會(huì)看到剛才上傳的eureka鏡像:
從harbor下載鏡像
docker images
spring cloud微服務(wù)持續(xù)集成
代碼上傳到gitlab
idea vcs
enable
git
add
commit
remotes
push
TortoiseGit操作方式
init
commit
push
remote
從gitlab拉取項(xiàng)目源碼
在項(xiàng)目根目錄創(chuàng)建Jenkinsfile腳本文件:
jenkins操作:創(chuàng)建pipeline
將分支設(shè)計(jì)成參數(shù)接收,更靈活:
腳本中的變量設(shè)計(jì):
" "雙引號(hào)引用變量:
提交Jenkinsfile腳本文件:
Build With Parameters
構(gòu)建完畢后代碼成功pull:
提交到SonarQube代碼審查
報(bào)錯(cuò):
注釋這行:
package各個(gè)子項(xiàng)目進(jìn)行
mvn install失敗
因?yàn)閏ommon工程不是一個(gè)標(biāo)準(zhǔn)的spring cloud微服務(wù)工程,找不到啟動(dòng)類main class而報(bào)錯(cuò)。
因此不能在parent工程中引入spring-boot-maven插件,而是在需要該插件的子工程中分別引入。
再次構(gòu)建,就已經(jīng)安裝到本地倉(cāng)庫(kù)了:
mvn clean package
使用${project_name}來獲取當(dāng)前工程的名稱
package zuul時(shí)報(bào)錯(cuò):
找不到parent父工程
需手動(dòng)上傳parent的pom文件到服務(wù)器的倉(cāng)庫(kù)相應(yīng)目錄下:
使用Dockerfile編譯、生成鏡像
dockerfile-maven-plugin插件可以讀取每個(gè)工程中的Dockerfile文件自動(dòng)構(gòu)建鏡像
tensquare_eureka_server工程
使用dockerfile-maven-plugin插件調(diào)用Dockerfile腳本文件生成鏡像:
在Jenkinsfile腳本中觸發(fā)dockerfile-maven-plugin插件的執(zhí)行:
構(gòu)建完畢后會(huì)生成eureka工程的鏡像:
每個(gè)子工程都需要添加Dockerfile腳本文件和在pom.xml中添加dockerfile-maven-plugin插件:
上傳鏡像到harbor鏡像倉(cāng)庫(kù)
定義鏡像的標(biāo)簽(版本號(hào)):
定義harbor的URL地址:
定義harbor的項(xiàng)目名稱:
上傳到harbor是需要login的,賬號(hào)密碼寫在Jenkinsfile腳本中就會(huì)暴露給所有開發(fā)人員,所以應(yīng)該在jenkins的憑據(jù)中添加harbor的賬號(hào)密碼:
點(diǎn)擊賬號(hào)進(jìn)入會(huì)看到自動(dòng)生成的ID:
在Jenkinsfile腳本中定義harbor的登錄憑證ID:
在流水線語(yǔ)法中選擇:
對(duì)生成的腳本代碼進(jìn)行變量替換(可選):
提交push腳本。
jenkins構(gòu)建日志:
登錄harbor倉(cāng)庫(kù)查看push的鏡像:
從harbor拉取鏡像和發(fā)布應(yīng)用
jenkins安裝Publish Over SSH插件
配置101ssh免密登錄到103
生成遠(yuǎn)程執(zhí)行命令腳本:
總結(jié)
以上是生活随笔為你收集整理的jenkins+Docker+springcloud微服务持续集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins pipeline、用户权
- 下一篇: k8s StatefulSet