阿里云Ubuntu系統(tǒng),Jenkins maven打包SpringBoot jar包自動化部署

先說一下沒用Jenkins的流程

  • 先把代碼push到碼云上面,然后使用idea打包jar包
  • 登錄服務(wù)器坞古,先找到8080端口占用進(jìn)程,netstat -apn | grep 8080
  • 殺死對應(yīng)的進(jìn)程劫樟,kill -9 xx進(jìn)程
  • 刪除之前的jar包 rm xxx.jar
  • 使用rz命令上傳idea打包的jar包
  • 啟動jar包 nohup java -jar xxx.jar --spring.profiles.active=dev > temp.txt 2>&1 &

雖然也沒幾步痪枫,但是每次上傳代碼都要這樣,實(shí)在是很繁瑣叠艳,網(wǎng)上搜索了一下相關(guān)工具奶陈,花了一天時間配置了一下。使用Jenkins之后附较,只需要通過idea把代碼上傳到碼云吃粒,然后點(diǎn)擊一個立即構(gòu)建按鈕即可,比之前要方便拒课。
主要原理就是Jenkins會從碼云下載代碼徐勃,然后自己打包,通過調(diào)用腳本代碼執(zhí)行殺死進(jìn)程早像,刪除文件僻肖,啟動jar包的相關(guān)操作。接下來我會把所有步驟寫下了扎酷,包括中間遇到的奇怪問題檐涝。

安裝java

輸入java -version查看是否安裝java

root@iZwz99ou8xtuhve2z7gdmiZ:~# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

如果提示沒有java按照提示進(jìn)行安裝即可
apt install openjdk-8-jre-headless

安裝Jenkins

Jenkins安裝方式比較多,選擇war包安裝,感覺這個比較方便法挨。
Jenkins.war下載,
也可以直接在服務(wù)器下載,

cd /opt
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

安裝maven

  • 下載 & 解壓
cd /opt
wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
 tar zxvf apache-maven-3.5.3-bin.tar.gz
  • 創(chuàng)建軟連接
ln -s /opt/apache-maven-3.5.3/bin/mvn mvn
  • 添加環(huán)境配置
vim /etc/profile

在 /etc/profile 文件最后加上下面代碼

export M2_HOME=/opt/apache-maven-3.5.3
export PATH=${M2_HOME}/bin:$PATH
配置.png
  • 使配置生效
source /etc/profile
  • 更改為淘寶鏡像
    修改 /opt/apache-maven-3.5.3/conf 目錄下settings.xml谁榜,加上
<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror> 

安裝git

apt install git

設(shè)置name ,emai

git config --global user.name xxx
git config --global user.email xxx@qq.com

生成ssh公鑰

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  

# Generating public/private rsa key pair...
# 三次回車即可生成 ssh key

查看你的 public key,并把他添加到碼云(Gitee.com) SSH key添加地址:https://gitee.com/profile/sshkeys)

cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

添加后凡纳,在終端(Terminal)中輸入

ssh -T git@gitee.com

若返回

Welcome to Gitee.com, yourname!

則證明添加成功

啟動jenkin.war

通過java -jar命令啟動war包

cd /opt
nohup java -jar jenkins.war  --httpPort=8000 > temp.txt 2>&1 &

提醒 一定要把阿里云服務(wù)器開通8000端口窃植,不然外部無法訪問

端口開通.png

如果一切順利,此時通過瀏覽器即可訪問荐糜,按照提示找到密碼巷怜,登錄進(jìn)去。插件安裝按照默認(rèn)即可暴氏,后面可以自行添加延塑。
登錄.png

選擇安裝推薦的插件即可
安裝插件.png

創(chuàng)建用戶.png

全局工具配置

你要做的就是打上勾,jdk和git不用填寫任何東西答渔,默認(rèn)即可


jdk&git配置.png

maven配置.png

創(chuàng)建任務(wù)

創(chuàng)建1.png
創(chuàng)建2.png

如果發(fā)現(xiàn)沒有"構(gòu)建一個maven項目",需要安裝插件Maven Integration plugin

插件安裝1.png

在可選插件中搜索即可关带,然后安裝。


插件安裝2.png

源碼管理沼撕,加上git地址即可


創(chuàng)建3.png

maven打包跳過測試 clean install -Dmaven.test.skip=true
創(chuàng)建4.png

最重要的地方到了宋雏,shell腳本配置
#!/bin/bash 
cd /opt/scripts
echo "Execute shell Start"
sh stop.sh
sh replace.sh
echo "Execute shell Finish"
chmod 777 /opt/scripts/startup.sh
BUILD_ID=dontKillMe nohup /opt/scripts/startup.sh &
創(chuàng)建5.png

三個腳本都放到/opt/scripts
replace.sh

jar_name=xxx.jar
#!編譯好的jar包存放地址
file_path=~/.jenkins/workspace/xxx/target
#!將現(xiàn)有的jar備份后芜飘,將新的jar包替換
file="/opt/xxx.jar"
if [ -f "$file" ]
then
mv /opt/xxx.jar /opt/backup/xxx.jar.`date +%Y%m%d%H%M%S`
fi
cp ~/.jenkins/workspace/xxx/target/xxx.jar /opt

記住一定要把上面的xxx換成你自己jar包的名稱
start.sh

mod 777 /opt/xxx.jar
echo "執(zhí)行....."
cd /opt
java -jar xxx.jar --spring.profiles.active=dev 
echo "**********************cmp on  jenkins started****

記住一定要把上面的xxx換成你自己jar包的名稱,我的項目有兩個配置文件磨总,所以通過--spring.profiles.active=dev 指明配置文件嗦明,如果你的springboot只有一個配置文件,就刪掉這個參數(shù)
stop.sh

#!將應(yīng)用停止
#!stop.sh
#!/bin/bash
cd /opt
echo "Stopping SpringBoot Application for CMP"
ls
pid=`ps -ef | grep xxx.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
#!kill -9 強(qiáng)制終止
   echo "kill -9 的pid:" $pid
   kill -9 $pid
fi

立即構(gòu)建

構(gòu)建.png

如果構(gòu)建出錯蚪燕,可以查看信息


控制臺輸出.png

遇到的問題

Maven error :Perhaps you are running on a JRE rather than a JDK?

google解決的,就是再安裝一遍娶牌,神奇!A谑怼裙戏!

sudo apt-get install openjdk-8-jdk

如果是win10系統(tǒng),記得添加JAVA_HOME環(huán)境變量


JAVA_HOME.png

遇到的第二個問題厕诡,廢了幾個小時才找到解決辦法問題如下

Spring Boot - Cannot determine embedded database driver class for database type NONE

可以看到google答案都是添加注解累榜,但是我都照做了,一直報這個錯誤灵嫌。就是idea可以把代碼運(yùn)行起來壹罚。并且通過idea打成jar包可以運(yùn)行,但是我本地通過mvn clean package -Dmaven.test.skip=true命令打包也成功了寿羞,但是就是無法運(yùn)行猖凛,最終找到了原因,報這個錯誤是因?yàn)閖ar包不能找到配置文件绪穆,在pom.xml設(shè)置就可以了辨泳。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市玖院,隨后出現(xiàn)的幾起案子菠红,更是在濱河造成了極大的恐慌,老刑警劉巖难菌,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件试溯,死亡現(xiàn)場離奇詭異,居然都是意外死亡郊酒,警方通過查閱死者的電腦和手機(jī)遇绞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燎窘,“玉大人摹闽,你說我怎么就攤上這事『纸。” “怎么了钩骇?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我倘屹,道長,這世上最難降的妖魔是什么慢叨? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任纽匙,我火速辦了婚禮,結(jié)果婚禮上拍谐,老公的妹妹穿的比我還像新娘烛缔。我一直安慰自己,他們只是感情好轩拨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布践瓷。 她就那樣靜靜地躺著,像睡著了一般亡蓉。 火紅的嫁衣襯著肌膚如雪晕翠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天砍濒,我揣著相機(jī)與錄音淋肾,去河邊找鬼。 笑死爸邢,一個胖子當(dāng)著我的面吹牛樊卓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杠河,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碌尔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了券敌?” 一聲冷哼從身側(cè)響起唾戚,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陪白,沒想到半個月后颈走,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咱士,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年立由,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片序厉。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锐膜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弛房,到底是詐尸還是另有隱情道盏,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站荷逞,受9級特大地震影響媒咳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜种远,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一涩澡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坠敷,春花似錦妙同、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至限次,卻和暖如春芒涡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掂恕。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工拖陆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懊亡。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓依啰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親店枣。 傳聞我的和親對象是個殘疾皇子速警,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容