【玩轉Docker容器 7】基於Docker安裝Jenkins實現自動化構建、部署、監控項目


推薦個人Docker文章,講的非常詳細

【玩轉Docker容器 1】Dockerd的詳解及安裝
【玩轉Docker容器 2】基於Docker一分鐘搭建完 Jdk、Mysql、Nginx、Redis、Tomcat環境
【玩轉Docker容器 3】基於Docker部署SpringBoot項目
【玩轉Docker容器 4】基於Docker搭建Docker私服,以及如何使用Docker私服詳解
【玩轉Docker容器 5】基於Docker搭建Maven私服,以及項目如何使用Maven私服詳解
【玩轉Docker容器 6】基於Docker構建GitLab管理代碼
【玩轉Docker容器 7】基於Docker安裝Jenkins實現自動化構建、部署、測試、監控項目

什麼是Jenkins

Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,它用Java語言編寫而成,可持續集成、自動的構建/測試軟件項目、監控外部任務的運行的web界面的平臺
在這裏插入圖片描述

CI/CD是什麼

CI(Continuous integration),中文意思是持續集成,是一種軟件開發時間。持續集成強調開發人員提交了新代碼之後,立刻進行構建、(單元)測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。

CD(Continuous Delivery), 中文意思持續交付,是在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境(類生產環境)中。比如,我們完成單元測試後,可以把代碼部署到連接數據庫的Staging環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境。

Jenkins的特點

1、開源的java語言開發持續集成工具,支持CI,CD;

2、易於安裝部署配置:可通過yum安裝,通過docker容器等快速實現安裝部署,可通過web界面配置管理;

3、消息通知及測試報告:集成RSS/E-mail通過RSS發佈構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告;

4、分佈式構建:支持Jenkins能夠讓多臺計算機一起構建/測試;

5、文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等;

6、豐富的插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具,如git,svn,maven,docker等。

7、支持項目持續監控,日誌輸出

使用Docker 安裝jenkins

1 使用docker 安裝jenkins

輸入下載(有可能比較久)
# docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 

2 訪問jenkins所在的IP地址加上8080端口

注意關閉8080防火牆
在這裏插入圖片描述
注意:第一次啓動的時候正在加載jenkins大概會等待3-10分鐘。出現下圖即可
在這裏插入圖片描述

3 解鎖jenkins

進入jenkins容器 查看密碼
# docker ps
# docker exec -it 容器id /bin/bash 
# cat /var/jenkins_home/secrets/initialAdminPassword

在這裏插入圖片描述
輸入上面複製的解鎖密碼
在這裏插入圖片描述
點擊安裝推薦插件
在這裏插入圖片描述
等待完成就好了
在這裏插入圖片描述
大概需要等待3-10分鐘

4 創建新的用戶

自己輸入填完
在這裏插入圖片描述
點擊開始使用
在這裏插入圖片描述
出現下圖就成功了
在這裏插入圖片描述

Jenkins全局工具配置

1 配置JDK

進入jenkins容器 查看java環境安裝地址
# docker ps
# docker exec -it 容器id /bin/bash 
# echo $JAVA_HOME

在這裏插入圖片描述
在點擊
在這裏插入圖片描述
找到jdk添加,別名隨便寫,這個JAVA_HOME就是自己查詢出來的JDK路徑
在這裏插入圖片描述
填寫完點擊保存

2 配置Maven

在這裏插入圖片描述
在這裏插入圖片描述
Maven的話就選擇直接點擊自動安裝就好了
在這裏插入圖片描述

3.配置項目Maven插件

上面不是配置了Maven插件嗎,那是不一樣的,上面那個是全局的Jenkins的Maven插件,我這裏是需要配置項目的Maven插件,現在的項目基本都Maven項目,所以需要部署時聯網下載。
在這裏插入圖片描述

搜索插件名稱:
Maven Integration

在這裏插入圖片描述
在選擇安裝後重啓
在這裏插入圖片描述
等待完成就OK啦

使用Jenkins自動打包SpringBoot項目

1 新建一個SpringBoot項目

我只勾選了WEB開發
在這裏插入圖片描述
添加這一點點代碼
在這裏插入圖片描述

package com.example.demo.api;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestApi {

    @RequestMapping("/test")
    public String test(){
        System.out.println("基於Docker安裝Jenkins實現自動化構建、部署、測試、監控項目");
        return "基於Docker安裝Jenkins實現自動化構建、部署、測試、監控項目";
    }
}

端口號:5656
在這裏插入圖片描述
運行訪問看看:
在這裏插入圖片描述

2 上傳項目至GitLab

使用git上傳,或者使用IDEA上傳,或者Eclipse上傳到GitLab上

我自己是找到項目地址使用Git打開git bash輸入命令上傳的

不懂看這篇文章,搭建、上傳、下載過程都有:
【玩轉Docker容器 6】基於Docker構建GitLab管理代碼

整個項目打包上來:
在這裏插入圖片描述

3 Jenkins實現Springboot項目自動部署

1 新建一個發佈任務

在這裏插入圖片描述
選擇Maven項目,在點擊確定

注:如果沒有Maven選項的話,就是 沒有完成上面:3 配置項目Maven插件這一步驟.
在這裏插入圖片描述

2 配置任務git地址和賬號密碼

上面那一步驟完成後,往下移,找到源碼管理,點擊Git
在這裏插入圖片描述
配置裏面的地址參數
在這裏插入圖片描述
把上面的複製下來:http://120.77.0.58/root/springboot_test.git

我這裏加了有點不一樣,我加上了端口號,因爲我服務器80端口未打開,我就使用了我GitLab的端口號,如果防火牆開發了80端口就不需要加上端口號
在這裏插入圖片描述
在配置用戶名密碼:
在這裏插入圖片描述
ID和描述可以不需要填,只需要填寫正確的地址和用戶名密碼就行了
在這裏插入圖片描述
還未完成
在這裏插入圖片描述
還未完!

3 配置項目自動打包

接着往下移找到Build

填寫
clean install

在這裏插入圖片描述
在點擊保存
在這裏插入圖片描述
完成後,在點擊立即構建
在這裏插入圖片描述
在點擊左下角
在這裏插入圖片描述
選擇控制檯,即可查看打包的日誌
在這裏插入圖片描述
下面是成功的樣子:
第一次構建可能耗時比較長,因爲需要下載一些相關依賴jar包

結尾出現:Finished: SUCCESS		代表成功
結尾出現:Finished: FAILURE		代表失敗

在這裏插入圖片描述

注意如果報錯:ERROR: Maven JVM terminated unexpectedly with exit code 137在這裏插入圖片描述
問題原因:因爲maven設置的內存不足,也就是服務器內存不足,運行內存不足,可以輸入top命令把大的進程給關了:TOP命令詳解

4 找到Jenkins打包的項目位置

Jenkins打包的項目是在Docker中Jenkins容器內,要找到打包的項目必須進入容器才能查看
在這裏插入圖片描述

輸入:
# docker ps
# docker exec -it 容器id /bin/bash 
# cd /var/jenkins_home/workspace/springboot_test/target/
# ls

在這裏插入圖片描述
上面的選項 4 就是打包成功的JAR包,這個包是可以直接在Docker容器內運行的,但是我們不要去容器內運行,我們要在可視化Jenkins中內實現打包後自動運行


使用Jenkins實現打包後執行shll腳本部署項目

1、選擇項目
在這裏插入圖片描述
2、點擊配置
在這裏插入圖片描述
3、往下移動找到Post Steps,選擇添加Shall腳本
在這裏插入圖片描述
4、配置腳本
配置:(需要修改前面四個)服務名、Jar包名稱、Jar包路徑、Jar包路勁
建議重控制檯輸出去複製粘貼上來

#!/bin/bash
#服務名稱,最好和項目名稱一致
SERVER_NAME=springboot_test
# 源jar路徑,mvn打包完成之後,target目錄下的jar包名稱,也可選擇成爲war包,war包可移動到Tomcat的webapps目錄下運行,這裏使用jar包,用java -jar 命令執行  
JAR_NAME=demo-0.0.1-SNAPSHOT
# 源jar路徑  
JAR_PATH=/var/jenkins_home/workspace/springboot_test/target/
JAR_WORK_PATH=/var/jenkins_home/workspace/springboot_test/target/

echo "查詢進程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到進程ID:$PID"
echo "結束進程"
for id in $PID
do
	kill -9 $id  
	echo "killed $id"  
done
echo "結束進程完成"

#複製jar包到執行目錄
echo "複製jar包到執行目錄:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "複製jar包完成"
cd $JAR_WORK_PATH
#修改文件權限
chmod 755 $JAR_NAME.jar


#如果要設置後臺啓動方式的話,修改底下爲:BUILD_ID=dontKillMe nohup java -jar  $JAR_NAME.jar  &
java -jar  $JAR_NAME.jar

在這裏插入圖片描述

5、保存完了後點擊:立即構建:
在這裏插入圖片描述
成功!
在這裏插入圖片描述

配置Docker容器映射外網訪問

輸入:
# docker ps
# docker exec -it 容器id /bin/bash 
# cd /var/jenkins_home/workspace/springboot_test/target/
# ps

在這裏插入圖片描述
發現已經配置完成,

但是外網訪問不了,就算關閉了防火牆也訪問不了,需要重新映射Docker中的Jenkins容器的端口號

1 配置Jenkins容器映射端口號

1.重啓容器

輸入:
systemctl restart  docker  

2.清空未運行的容器

輸入:
docker run -d -p 8080:8080 -p 5656:5656 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

5656端口號是我的項目端口號
在這裏插入圖片描述

2 重新構建項目

等待重啓完成,在次點擊立即構建
在這裏插入圖片描述
等待構建完成即可

外網訪問測試

輸入:IP地址+端口號+接口路徑
在這裏插入圖片描述
完成!

何爲自動化部署項目

1、現在的項目輸入是這樣的:
在這裏插入圖片描述
2、修改源代碼
在這裏插入圖片描述

3.使用Git重新提交項目
在這裏插入圖片描述
4.點擊關閉,在點擊構建
在這裏插入圖片描述
5.在此訪問查看
在這裏插入圖片描述
成功!

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