Jenkins+Docker+Gitee+SpringBoot自動化部署
當我們使用傳統(tǒng)的開發(fā)方式開發(fā)后臺系統(tǒng)時,每寫完一個功能點就需要重新運行一下項目,然后進行測試,如果是項目比較小還可以,但是如果項目比較大的話,由于涉及的人員比較多,這種開發(fā)方式就比較麻煩?;诖耍覀兙托枰褂肑enkins配合Gitee搭建一個自動化部署平臺,并將代碼托管到服務(wù)器上,這樣減輕了本地的電腦壓力,也解放了部署的流程。
1, 搭建Jenkins平臺
首先,我們需要搭建一下Jenkins自動化構(gòu)建平臺。首先,我們需要安裝Docker,然后在Docker中安裝Jenkins,安裝的命令如下:
# 安裝yum-utils工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 配置阿里云的Docker Yum源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安裝Docker sudo yum install docker-ce docker-ce-cli containerd.io # 啟動Docker sudo systemctl start docker # 配置開機自啟動 sudo systemctl enable docker
通過以上指令即可成功安裝Docker并啟動,接下來我們通過Docker運行Jenkins。
docker run \ -d \ --rm \ -u root \ -p 8080:8080 \ -v /home/jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven \ -v "$HOME":/home \ jenkinsci/blueocean
執(zhí)行上述指令Docker會自動拉取Jenkins的鏡像并啟動,因為我們要部署的是SpringBoot,所以需要準備JDK和Maven環(huán)境,不過該Jenkins鏡像自帶了JDK環(huán)境,只需準備一下Maven即可,首先,下載Maven壓縮包,命令如下:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
然后,使用命令解壓文件。
tar -zxvf apache-maven-3.6.3-bin.tar.gz
解壓之后千萬要注意Maven所在的目錄,比如:
/opt/develop_resource/apache-maven-3.6.3
將它掛載到容器的目錄里,-v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven
這一條指令中的Maven目錄千萬記得換成自己的?,F(xiàn)在,我們可以運行剛才的指令啟動Jenkins了,通過docker ps
指令可以查看容器是否啟動。
[root@10 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfa1b8b2c7a3 jenkinsci/blueocean "/sbin/tini -- /usr/…" 15 seconds ago Up 9 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 50000/tcp condescending_meitner
接下來,我們使用服務(wù)器的ip加端口8080的方式訪問Jenkins。
管理員密碼可以在Jenkins的啟動日志中查看,使用docker logs dfa1b8b2c7a3查看日志:
密碼就是紅框中的字符串,注意紅框下的一段提示:
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
意思是你可以在/var/jenkins_home/secrets/initialAdminPassword這個文件中查看到管理員密碼,不過這是Jenkins容器內(nèi)的目錄,我們在啟動Jenkins的就掛載了Jenkins的關(guān)鍵目錄/var/jenkins_home,宿主機目錄為/home/jenkins-data,所以可以使用如下指令查看管理員密碼。
cat /home/jenkins-data/secrets/initialAdminPassword
得到密碼后輸入到Jenkins頁面解鎖Jenkins,然后點擊安裝推薦的插件。
接下來,直接點擊【下一步】。
到這一步,Jenkins平臺就可以正式使用了。
2, Jenkins平臺配置
接下來,就是對Jenkins平臺的配置,首先配置Maven。
按步驟點擊,即可進入系統(tǒng)配置。首先,在全局屬性中進行配置。
還記得我們在運行Jenkins容器時掛載的Maven目錄嗎?掛載到Jenkins容器中的目錄就是/usr/local/maven,如果實在搞不懂的你就保持和我的配置一樣即可。
以同樣的方式,再新增一個配置:
PATH+EXTRA的作用是讓原來PATH變量中的環(huán)境不丟失,最后點擊保存。Maven配置完成后,需要配置Gitee。
點擊可選插件,選中Gitee,然后點擊Install without restart進行安裝,等待安裝完成即可,Gitee的相關(guān)配置我們放到后面講。
3,創(chuàng)建SpringBoot應(yīng)用
首先,我們創(chuàng)建一個簡單的SpringBoot應(yīng)用進行測試,控制器代碼如下。
@RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "Hello World!"; } }
然后在配置文件application.yml中添加:
server: port: 8000
并在main下新建docker文件夾,在docker文件夾下新建Dockefile文件,內(nèi)容如下。
# 指定是基于哪個基礎(chǔ)鏡像 FROM java:8 # 作者信息 MAINTAINER wwj # 掛載點聲明 VOLUME /tmp # 將本地的一個文件或目錄,拷貝到容器的文件或目錄里 ADD /target/demo-0.0.1-SNAPSHOT.jar springboot.jar #shell腳本 RUN bash -c 'touch /springboot.jar' # 將容器的8000端口暴露,給外部訪問。 EXPOSE 8000 # 當容器運行起來時執(zhí)行使用運行jar的指令 ENTRYPOINT ["java", "-jar", "springboot.jar"]
需要注意的是ADD指令的編寫,當SpringBoot應(yīng)用打包完成后,其jar包會被放在target目錄下。
所以需要指定該文件的位置,使用ADD指令將其放入待構(gòu)建的容器中,接著在Gitee中新建一個倉庫,并將代碼推送到倉庫中。
倉庫名隨便你叫什么,然后將剛才的應(yīng)用推送上去即可。
4,Gitee配置
推送完成后,回到Jenkins管理界面,我們來完成Gitee的配置,打開系統(tǒng)配置。
找到Gitee配置,填入對應(yīng)的信息:
點擊添加按鈕添加一個Jenkins憑證。
選擇Gitee API 令牌:
私人令牌的獲取地址為:https://gitee.com/profile/personal_access_tokens。
5, 新建自動化部署任務(wù)
配置完成,接下來新建一個任務(wù),點擊新建Item。
隨便輸入一個任務(wù)名稱,并選擇【Freestyle project】。
在源碼管理處勾選Git,并填入項目地址,然后在構(gòu)建觸發(fā)器位置勾選觸發(fā)打包的時機。
在構(gòu)建觸發(fā)器最底部位置點擊生成Gitee WebHook密碼。
然后打開Gitee項目中的WebHooks,添加webHook。
此處的URL需要填入一個公網(wǎng)IP,所以如果你是用的虛擬機,就需要用內(nèi)網(wǎng)穿透工具映射一下。
至于URL應(yīng)該填什么,我們需要修改一下。
填寫完成后點擊添加,Gitee便會發(fā)送一個Post請求到Jenkins,如果請求結(jié)果如下所示,則配置成功了。
重新回到Jenkins管理界面,繼續(xù)勾選構(gòu)建觸發(fā)器下的輪詢SCM,輸入輪詢頻率。
最后在構(gòu)建位置下增加構(gòu)建步驟,選擇執(zhí)行shell。
shell腳本代碼如下。
#!/bin/bash -il docker rm -f app_docker sleep 1 docker rmi -f app_docker:1.0 sleep 1 mvn clean install -Dmaven.test.skip=true sleep 1 docker build -t app_docker:1.0 -f ./src/main/docker/Dockerfile . sleep 1 docker run -d -p 8000:8000 --name app_docker app_docker:1.0
該腳本表示刪除正在運行的app_docker容器,并刪除app_docker:1.0鏡像,然后使用mvn命令打包從Gitee拉取來的項目代碼,接著使用項目中的Dockerfile文件構(gòu)建出一個鏡像,名稱為app_docker:1.0,最后運行該鏡像。
6,打包測試
最后點擊保存,部署任務(wù)就創(chuàng)建完成了,我們來測試一下有沒有問題。
點擊立即構(gòu)建,Jenkins會立馬進行一次構(gòu)建,查看控制臺輸出。
最后,我們打開默認的地址即可。
到此這篇關(guān)于Jenkins+Docker+Gitee+SpringBoot自動化部署的文章就介紹到這了,更多相關(guān)Jenkins Docker+Gitee+SpringBoot自動化部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- spring boot 項目利用Jenkins實現(xiàn)自動化部署的教程詳解
- 詳解jenkins自動部署springboot應(yīng)用的方法
- Jenkins自動化部署springboot代碼實例
- springboot docker jenkins 自動化部署并上傳鏡像的步驟詳解
- Jenkins自動部署SpringBoot項目實踐教程
- 阿里SpringBoot應(yīng)用自動化部署實現(xiàn)IDEA版Jenkins
- Jenkins+Docker?一鍵自動化部署?SpringBoot?項目的詳細步驟
- Jenkins自動化部署SpringBoot項目的實現(xiàn)
- Jenkins中自動化部署Spring Boot項目的全過程
相關(guān)文章
java中ArrayList 、LinkList的區(qū)別分析
java中ArrayList 、LinkList的區(qū)別分析,需要的朋友可以參考一下2013-05-05SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫連接池
這篇文章主要介紹了SpringBoot整合Mybatis使用Druid數(shù)據(jù)庫連接池,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03