目錄
- 持續(xù)交付系列課程總覽
- 實(shí)戰(zhàn)項(xiàng)目簡(jiǎn)介
- 環(huán)境準(zhǔn)備
- 項(xiàng)目配置集侯、調(diào)試、運(yùn)行
一、持續(xù)交付系列課程總覽
- 已學(xué)習(xí)的Jenkins功能
- 基礎(chǔ)功能
- 自動(dòng)化測(cè)試持續(xù)集成
- App源碼打包遍略、發(fā)布、自動(dòng)測(cè)試全流程
- 持續(xù)交付系列課程目標(biāo):應(yīng)用自動(dòng)化部署
- 測(cè)試工程師的常見(jiàn)需求
- 自動(dòng)化部署技術(shù)最好自己掌握骤坐,即便研發(fā)绪杏、運(yùn)維已經(jīng)會(huì)了
- 語(yǔ)言多、架構(gòu)多纽绍、部署打包工具都不一樣蕾久,我們?cè)趺磻?yīng)對(duì)
- 持續(xù)交付系列學(xué)習(xí)過(guò)程
- 應(yīng)用部署的過(guò)程
- 運(yùn)行環(huán)境的搭建
- 代碼細(xì)節(jié)可以循序漸進(jìn)的學(xué)
- 持續(xù)交付系列實(shí)戰(zhàn)安排
- 基礎(chǔ)內(nèi)容學(xué)習(xí),部署環(huán)境準(zhǔn)備拌夏,運(yùn)行演練
- Spring boot架構(gòu)項(xiàng)目Server容器中運(yùn)行持續(xù)交付演練
- Spring boot架構(gòu)項(xiàng)目Docker運(yùn)行持續(xù)交付演練
二僧著、實(shí)戰(zhàn)項(xiàng)目簡(jiǎn)介
- 實(shí)戰(zhàn)項(xiàng)目 - JeeSite
- 基于Spring Boot 2.0
- 數(shù)據(jù)存儲(chǔ)mysql
- 技術(shù)選型:主流
- 語(yǔ)言:Java
- 規(guī)模適中,不大不小
- 適合初學(xué)者的教學(xué)項(xiàng)目
-
實(shí)戰(zhàn)項(xiàng)目- JeeSite
- 源碼位置:https://github.com/princeqjzh/JeeSite4
- 原始工程的位置:https://gitee.com/thinkgem/jeesite4
- 社區(qū)版項(xiàng)目障簿,我們拿來(lái)學(xué)習(xí)
-
Demo
- 源碼庫(kù)演示
- 運(yùn)行應(yīng)用演示
-
實(shí)戰(zhàn)項(xiàng)目小結(jié)
- 多模塊組合項(xiàng)目
- 基礎(chǔ)公共引擎模塊:common
- 核心系統(tǒng)模塊:core
- 模塊示例模板:template
- 模塊父節(jié)點(diǎn):parent
- 入口模塊:root
- web模塊:web
- Deploy:部署代碼
聊聊Spring Boot
- 目的
- 不是為了學(xué)習(xí)開發(fā)Spring Boot盹愚,先了解一下SpringBoot的樣子,增強(qiáng)一些親密感
- 感性認(rèn)識(shí)站故,為學(xué)習(xí)Spring Boot項(xiàng)目持續(xù)交付做準(zhǔn)備
- 框架
- 從寫程序到做軟件的必經(jīng)之路
- Copy->建筑工程學(xué)的理論皆怕,Paste->軟件工程學(xué)
- Spring框架
- J2EE輕量級(jí)開源框架
- EJB開發(fā)太麻煩毅舆,代碼量很重;Spring簡(jiǎn)化了企業(yè)應(yīng)用的開發(fā)難度愈腾,少寫代碼專注業(yè)務(wù)
- Spring容器管理對(duì)象生命周期憋活,簡(jiǎn)化應(yīng)用開發(fā)難度
- Spring Boot框架
- 比一般Spring還要方便的快速框架
- 方便集成大量第三方庫(kù),降低集成難度
- 學(xué)習(xí)方法建議:別從“0”開始學(xué)虱黄,可以基于一個(gè)現(xiàn)有的項(xiàng)目悦即,然后做擴(kuò)展
- 找一個(gè)適合學(xué)習(xí)的項(xiàng)目很重要
三、環(huán)境準(zhǔn)備
- 準(zhǔn)備了環(huán)境橱乱,才能運(yùn)行程序
- 初學(xué)者常見(jiàn)的痛點(diǎn)
- 環(huán)境配置關(guān)鍵點(diǎn):配置過(guò)程辜梳,驗(yàn)證方法,錯(cuò)誤日志
- SpringBoot項(xiàng)日運(yùn)行配置mysql+java+maven
MySQL的部署
- 首推Docker部署泳叠,實(shí)在太方便了無(wú)法拒絕
- 下載docker鏡像:
docker pull mysql
- 啟動(dòng)mysql docker container實(shí)例
docker run -d --name <your container name> -e MYSQL_ROOT_PASSWORD=<your root password> -p 3306:3306 mysql:<tag>
- MySQL客戶端工具
- MySQL Workbench
- 新建Server Connection冗美,輸入Host、Port析二、Username粉洼、Password
-
嘗試連接,能成功就說(shuō)明輸入的參數(shù)無(wú)誤
image.png
- 創(chuàng)建jeesite 數(shù)據(jù)庫(kù):
create database jeesite
image.png
Java開發(fā)環(huán)境安裝方法
- 安裝包下載路徑:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
- 命令安裝
- CentOS:
yum install java-1.8.0-openjdk* -y
- Ubuntu:
apt-get install oracle-java8-installer
- Mac:
brew cask install java
- CentOS:
- 解壓安裝
- 將JDK運(yùn)行程序直接解壓縮到本地路徑叶摄,然后配置環(huán)境變量
JAVA_HOME=<jdk root path>
export PATH=$PATH:$JAVA_HOME/bin
- Java環(huán)境安裝正確的驗(yàn)證:
java -version
image.png
Maven環(huán)境安裝方法-Demo
-
下載文件:zip 或者tar格式壓縮包属韧,帶bin字樣的表明是可以直接運(yùn)行的二進(jìn)制文件
image.png -
Maven環(huán)境安裝方法
- 將安裝包解壓到本地路徑,然后配置環(huán)境變量
export M2_HOME=<maven root path>
export PATH=$PATH:$M2_HOME/bin
-
驗(yàn)證Maven安裝成功的方法:
mvn -version
image.png 加速依賴包下載方法蛤吓,在
settings.xml
中添加阿里云鏡像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
四宵喂、配置 調(diào)試 運(yùn)行
數(shù)據(jù)庫(kù)準(zhǔn)備
- 創(chuàng)建jeesite數(shù)據(jù)庫(kù)
- SQL語(yǔ)句:
create database jeesite
- 檢查數(shù)據(jù)創(chuàng)建結(jié)果
初始化數(shù)據(jù)導(dǎo)入
-
打開
jeesite4/web/src/main/resources/config/application.yml
,填寫數(shù)據(jù)庫(kù)配置(IP 端口会傲、用戶名锅棕、密碼)
image.png 進(jìn)入項(xiàng)目路徑
jeesite4/web/bin
-
運(yùn)行數(shù)據(jù)初始化腳本程序
init-data.sh
( windows batch command:init-data.bat
)
image.png
IDE里配置項(xiàng)目
- 添加 jeesite4/root/pom.xml Maven根節(jié)點(diǎn)到IDE的maven view中
- 其余依賴module會(huì)根據(jù)配置一起導(dǎo)入
-
添加 jeesite4/root/pom.xml Maven根節(jié)點(diǎn)到IDE的maven view中
image.png
IDE里Maven編譯、打包項(xiàng)目
-
在Maven View中選中JeeSite Root 下Lifecycle中的Clean + Install淌山,然后單擊運(yùn)行按鈕
image.png
image.png
IDE里直接運(yùn)行項(xiàng)目
-
在Run/DebugConfigurations中添加SpringBoot
image.png -
配置Main class:
com.jeesite.modules.Application
image.png
image.png -
運(yùn)行Demo ~~~~
image.png -
訪問(wèn)8980端口
image.png
命令行里編譯裸燎、打包項(xiàng)目
- 進(jìn)入項(xiàng)目的root模塊所在的目錄,然后運(yùn)行
mvn clean install
命令執(zhí)行項(xiàng)目編譯
命令行里運(yùn)行項(xiàng)目
-
進(jìn)入jeesite4/web目錄下泼疑,運(yùn)行:
mvn clean spring-boot:run -Dmaven.test.skip=true
image.png
image.png -
訪問(wèn)8980端口
image.png
編寫部署腳本
- 將部署動(dòng)作“翻譯”成shell腳本德绿,然后部署到Jenkins中進(jìn)行持續(xù)交付部署
- Demo:代碼講解
deploy/start_spring-boot.sh
#!/usr/bin/env bash
## 檢查系統(tǒng)類型
export os_type=`uname`
## 停止spring-boot函數(shù)
killSpringBoot()
{
pid=`ps -ef|grep spring-boot|grep java|awk '{print $2}'`
echo "spring-boot list :$pid"
if [ "$pid" = "" ]
then
echo "no spring-boot pid alive"
else
kill -9 $pid
fi
}
## Kill 當(dāng)前正在運(yùn)行的spring-boot
killSpringBoot
## Maven 編譯
cd ${WORKSPACE}/root
mvn clean install
## Maven 運(yùn)行
cd ${WORKSPACE}/web
nohub mvn clean spring-boot:run -Dmaven.test.skip=true &
Jenkins部署
- 創(chuàng)建Jenkins任務(wù),設(shè)定部署任務(wù)
- Demo Jenkins任務(wù)執(zhí)行
-
創(chuàng)建任務(wù)
image.png -
添加項(xiàng)目地址
image.png 添加運(yùn)行代碼:
-
. ~/.bash_profile
:獲取環(huán)境變量 -
sh deploy/start_spring-boot.sh
image.png
-
構(gòu)建任務(wù)
image.png
image.png -
構(gòu)建完成后發(fā)現(xiàn)spring-boot并沒(méi)有運(yùn)行起來(lái)
image.png
原因是:Jenkins運(yùn)行時(shí)有子進(jìn)程和父進(jìn)程的關(guān)系退渗,Jenkins運(yùn)行完spring-boot中的代碼后會(huì)將子進(jìn)程給kill掉移稳,所以當(dāng)Jenkins中的job構(gòu)建完成后spring-boot中的項(xiàng)目也會(huì)結(jié)束運(yùn)行。解決方法是在運(yùn)行代碼中添加:
BUILD_ID=DONTKILLME
image.png
-
再次查看進(jìn)程并進(jìn)入8980端口
image.png
image.png