国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Jenkins一鍵打包部署SpringBoot應用步驟詳解

開發 前端
關于JDK的選擇,自1.8版本收費之后,我們大多數選擇openjdk作為生產環境的運行時環境,和大多數軟件安裝包一樣,在CentOS服務器上,我們可以選擇yum方式和下載壓縮包的方式進行安裝。

本文介紹使用Jenkins一鍵將SpringBoot應用打包并上傳到生產環境服務器運行,這里使用的是直接在服務器上運行FagJar的方式,首先確保服務器環境配置好,安裝必須的JDK運行時環境,運行目錄,日志存放目錄等。

一、服務器環境配置

??關于JDK的選擇,自1.8版本收費之后,我們大多數選擇openjdk作為生產環境的運行時環境,和大多數軟件安裝包一樣,在CentOS服務器上,我們可以選擇yum方式和下載壓縮包的方式進行安裝。大多數情況下使用yum方式比較簡單方便。也有特殊情況,一些安全要求高單位或系統,只允許在局域網內運行,此時就需要選擇壓縮包的方式進行安裝了。

1. yum方式安裝openjdk

  • 查詢當前CentOS系統可以安裝的openjdk版本,我們只需要運行時環境,所以java-11-openjdk.x86_64是我們需要安裝的包,實際相當于jre運行時;里面還有一個包java-11-openjdk-devel.x86_64,這個包是傳統意義的jdk就是包含開發和打包工具,在生產環境,沒有需要我們可以不安裝。
yum search java | grep -i --color openjdk
[root@localhost ~]# yum search java | grep -i --color openjdk
openjdk-asmtools-javadoc.noarch : Javadoc for openjdk-asmtools
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-demo.i686 : OpenJDK Demos 8
java-1.8.0-openjdk-demo.x86_64 : OpenJDK 8 Demos
java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment 8
java-1.8.0-openjdk-devel.x86_64 : OpenJDK 8 Development Environment
java-1.8.0-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-headless.x86_64 : OpenJDK 8 Headless Runtime Environment
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed
java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-src.x86_64 : OpenJDK 8 Source Bundle
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment
java-11-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-headless.x86_64 : OpenJDK 11 Headless Runtime Environment
java-11-openjdk-javadoc.i686 : OpenJDK 11 API documentation
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-11-openjdk-javadoc-zip.i686 : OpenJDK 11 API documentation compressed in a
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in
java-11-openjdk-jmods.i686 : JMods for OpenJDK 11
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-src.i686 : OpenJDK Source Bundle 11
java-11-openjdk-src.x86_64 : OpenJDK 11 Source Bundle
java-11-openjdk-static-libs.i686 : OpenJDK libraries for static linking 11
java-11-openjdk-static-libs.x86_64 : OpenJDK 11 libraries for static linking
openjdk-asmtools.noarch : To develop tools create proper & improper Java
openprops.noarch : An improved java.util.Properties from OpenJDK
  • 選擇openjdk11,執行安裝命令
sudo yum install java-11-openjdk.x86_64 -y
  • 此時執行java -version可以看到已安裝版本,使用which java可以看到java執行路徑為/usr/bin/java,但這里不是openjdk的真實安裝路徑,需要通過命令dirname查看真實路徑。
[root@localhost /]# java -version
openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS, mixed mode, sharing)
[root@localhost /]# which java
/usr/bin/java
  • 查看openjdk真實安裝路徑,用此路徑配置JAVA_HOME
[root@localhost /]# dirname $(readlink $(readlink $(which java)))
/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64/bin
  • 使用vi /etc/profile編輯profile文件,按i編輯,在文件底部加入一下配置,按:wq!保存退出。
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME
  • 執行source /etc/profile命令, 讓profile文件立即生效。
[root@localhost /]# source /etc/profile
[root@localhost /]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64

??執行完以上操作之后,Java運行時環境就安裝配置好了,但是一定要注意:PATH在配置的時候,一定要把$JAVA_HOME/bin放在前面,不然系統中安裝有多個版本的JDK,那么在使用java命令時,系統會找到其他版本的Java。還有以前很多教程配置中的CLASSPATH和tools.jar在JDK1.5以后就不需要配置了。

2. 部署及備份目錄準備

  • 新建 /opt/tmp 目錄,用于Jenkins打包后,通過 Publish Over SSH插件將包傳輸到服務器的臨時目錄。
  • 新建 /opt/bak 目錄,用于存儲所有部署過的包備份,方便后續版本回滾。此目錄可能會占用很大空間,所以需要選擇一個磁盤空間大的掛載目錄。
  • 新建 /opt/script 目錄,用于Jenkins將包傳輸完成之后,執行安裝、備份操作的相關命令腳本。
  • 新建 /data/container/server,作為服務的運行目錄,服務FatJar也會部署到此目錄。
mkdir -p /opt/tmp /opt/bak /opt/script /data/container/server
chmod -R 777 /opt/tmp /opt/bak /opt/script /data/container/server

3. 部署腳本編寫說明

  • 定義入參,可以通過Jenkins任務將參數傳入腳本中,我們定義了下面3個參數:
    project_name=gitegg-server : 服務名稱server_port=8080 : 服務端口號server_path=“/data/container/server” : 服務運行路徑
  • 對參數進行檢查,是否未傳入參數,這里根據自己的實際情況判斷,比如必須傳入哪些參數,就設置參數的個數不能小于幾。
echo "param validate"
if [ $# -lt 1 ]; then  
  echo "you must use like this : ./publish_gitegg_server.sh [projectname] [server port] [server home dir]"  
  exit  
fi
  • 入參賦值,如果有參數傳入,則取服務參數,如果沒有參數傳入則取默認值
if [ "$1" != "" ]; then
   project_name="$1"
fi
if [ "$2" != "" ]; then
   server_port="$2"
fi
if [ "$3" != "" ]; then
   server_path="$3"
fi
  • Jenkins調用sh命令時,可能會找不到JAVA_HOME,導致服務無法運行,所以在次數在配置一下
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
  • 停止服務
#check server process
server_pid=`/usr/sbin/lsof -n -P -t -i :$server_port`
echo "current :" $server_pid
#shutdown server
kill -9 $server_pid
echo "server shutting down"
while [ -n "$server_pid" ]
do
 sleep 5
 server_pid=`/usr/sbin/lsof -n -P -t -i :$server_port`
 echo "scan server pid :" $server_pid
done
echo "server shutt down"
  • 部署服務運行的FatJar
#publish project
echo "scan no server pid,$project_name publishing"
rm -rf "$server_path"/$project_name*.jar
cp /opt/tmp/$project_name*.jar "$server_path"/$project_name.jar
  • 備份本次發布的FatJar
#bak project
BAK_DIR=/opt/bak/$project_name/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$server_path"/$project_name.jar "$BAK_DIR"/"$project_name"_`date +%H%M%S`.jar
#remove tmp
rm -rf /opt/tmp/$project_name*.jar
  • 執行運行命令
cd "$server_path"
source /etc/profile
nohup java -jar -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m "$project_name".jar --server.port="$server_port" > log.file 2>&1 &
  • 打印執行完成的命令
echo "Server is starting,please try to access $container_name conslone url"
  • 完整的安裝部署腳本
project_name=gitegg-server
server_port=8080
server_path="/data/container/server"
#param validate
if [ $# -lt 1 ]; then  
  echo "you must use like this : ./publish_qxq_server.sh [projectname] [server port] [server home dir]"  
  exit  
fi
if [ "$1" != "" ]; then
   project_name="$1"
fi
if [ "$2" != "" ]; then
   server_port="$2"
fi
if [ "$3" != "" ]; then
   server_path="$3"
fi
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
#check server process
server_pid=`/usr/sbin/lsof -n -P -t -i :$server_port`
echo "current :" $server_pid
#shutdown server
kill -9 $server_pid
echo "server shutting down"
while [ -n "$server_pid" ]
do
 sleep 5
 server_pid=`/usr/sbin/lsof -n -P -t -i :$server_port`
 echo "scan server pid :" $server_pid
done
echo "server shutt down"
#publish project
echo "scan no server pid,$project_name publishing"
rm -rf "$server_path"/$project_name*.jar
cp /opt/tmp/$project_name*.jar "$server_path"/$project_name.jar
#bak project
BAK_DIR=/opt/bak/$project_name/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$server_path"/$project_name.jar "$BAK_DIR"/"$project_name"_`date +%H%M%S`.jar
#remove tmp
rm -rf /opt/tmp/$project_name*.jar
#start server
cd "$server_path"
source /etc/profile
nohup java -jar -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m "$project_name".jar --server.port="$server_port" > log.file 2>&1 &
echo "Server is starting,please try to access $project_name conslone url"
  • 將部署腳本上傳到服務器的/opt/script目錄下,并賦予可執行權限
chmod 755 publish_server.sh

二、新建Jenkins配置打包任務,部署SpringBoot應用

1. Dashboard > 新建任務,輸入任務名稱,選擇“構建一個maven項目”,點擊確定。

2. 項目配置,進入到任務配置頁

  • 丟棄舊的構建 :這里在保持構建的最大個數填寫5,當然可以根據自己情況填寫,否則舊的構建包會一直存在占用磁盤空間。

  • 源碼管理:配置git代碼地址、用戶名密碼和版本分支,如果是需要用戶名密碼的git庫,那么下面需要選擇訪問的用戶名密碼,這里一定要使用用戶名密碼方式,使用token的方式無法選中。可以在下方add,也可以在Jenkins全局Credentials 中添加,方便其它任務使用。

  • 構建觸發器:可選可不選,這個根據自己的需求選擇,任務在什么情況下出發構建。

  • 構建環境:這里不需要選擇,在介紹構建NodeJS項目時,需要選中NodeJS環境。

  • Build:這里填寫Maven打包命令,可以添加參數選擇打包環境test或prod等。

  • Post Steps:將打包后的文件發送到服務器,并執行設置好的腳本,這里選擇Run only if build succeeds,當構建成功時Post。

  • Exec command:將打好的包發布到環境之后,在環境上執行的部署腳本命令。/opt/script/publish_server.sh 是腳本文件、gitegg-application是項目名稱、8182 是項目端口號、/data/container/server 是jar包存放路徑。
/opt/script/publish_server.sh gitegg-application 8182 /data/container/server

3. 運行構建任務

  • 立即構建

  • 查看構建日志:點擊立即構建之后,下方會出現進度條,點擊進度條就可以進入構建日志界面。



4、構建成功后,下方會給出構建成功提示,此時登錄遠程服務器查看文件是否部署成功即可。

舉報

評論 1

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-09-12 07:06:04

2023-09-14 20:55:52

NodeJSDocker

2023-09-10 07:20:35

2023-06-15 10:00:00

Jenkins任務操作

2025-09-29 04:55:00

SpringBootARDocker

2025-09-08 01:15:00

2024-04-08 13:59:03

大模型Replicate

2015-02-09 15:25:52

換膚

2019-02-18 20:14:12

AWS區塊鏈應用

2012-07-03 16:03:07

2015-06-09 10:36:13

Cloud FoundAzurePaaS

2018-01-09 16:45:31

離線網絡網絡安全一鍵式部署

2025-04-29 10:13:58

2011-07-25 23:08:42

投影儀評測

2022-01-09 23:09:08

Windows 10Windows微軟

2012-04-20 14:33:10

海爾一體機

2020-06-04 17:21:05

印度應用移動應用

2019-08-28 12:02:04

Helm云原生一鍵部署
點贊
收藏

51CTO技術棧公眾號

亚洲伦理一区| 亚瑟一区二区三区四区| 亚洲欧美日韩一区二区 | 国产一区二区91| 狠狠色噜噜狠狠色综合久| 成人搞黄视频| 亚洲人av在线影院| 国产高清在线a视频大全| 欧美久久久久免费| 五月婷婷在线观看| 在线免费观看日本欧美| 最全影音av资源中文字幕在线| 国产片一区二区| 亚洲国产精品久久久久爰色欲| 99re66热这里只有精品3直播| www.国产二区| 99久久婷婷国产综合精品电影| 免费人成自慰网站| 99热精品一区二区| 91看片就是不一样| 国产精品久久久久桃色tv| 国产又黄又大又粗视频| 久久免费精品国产久精品久久久久| 青青青在线观看视频| 99久久免费视频.com| 别急慢慢来1978如如2| 国产情人综合久久777777| 北条麻妃av高潮尖叫在线观看| 久久久久国产精品麻豆ai换脸| 成人免费毛片播放| 亚洲视频一二三区| 久草在线新视觉| 欧美午夜美女看片| 黄色小网站在线观看| 精品国产自在久精品国产| 久久电影tv| 国产69精品久久久| 欧美顶级大胆免费视频| 精品人伦一区二区三区| 青青草原综合久久大伊人精品优势| 在线观看18视频网站| 91蝌蚪国产九色| www.成人精品免费网站青椒| 欧美午夜女人视频在线| 日本性爱视频在线观看| 中文欧美日本在线资源| 欧美国产不卡| av一区二区三区在线观看| 日韩中文字幕一区二区三区| 日韩a级黄色片| 中文字幕一区二区三区蜜月| 午夜cr在线观看高清在线视频完整版| 欧美日韩国产天堂| 国产毛片精品久久| 国产欧美va欧美va香蕉在线| 日韩电影在线免费观看| 日本www高清视频| 色婷婷久久综合| 欧美电影免费观看| 国产成人精品久久久| 亚洲一区久久| 99999精品视频| 欧美日韩另类字幕中文| 成人动漫一区| 国产精品亚洲一区二区三区| 免费一级欧美片在线观看| 9l视频白拍9色9l视频| 欧美日韩午夜影院| 综合伊人久久| 日产精品一线二线三线芒果| 国产精品福利av| 678在线观看视频| 国产精品色悠悠| 成人手机在线视频| 成人在线免费视频| 欧美精品久久久久| 麻豆精品网站| 1024欧美极品| 精品亚洲一区二区三区在线播放 | 日韩在线免费电影| 欧美劲爆第一页| 久久天天综合| 超碰超碰97| 亚洲区在线播放| 韩国一区二区三区在线观看| 精品久久久久av| 亚洲成人免费在线视频| 国产精品久久久乱弄| 岳毛多又紧做起爽| 亚洲第一中文字幕| 好吊一区二区三区| 麻豆免费网站| 亚洲人成网站777色婷婷| 欧美日韩视频| 一级特黄特色的免费大片| 在线精品播放av| 先锋影音国产一区| 天堂av在线播放| 91成品人片a无限观看| 成人高清视频在线观看| 成全电影大全在线观看| 国产精品精品软件视频| 亚洲一区二区三区美女| 91麻豆精品激情在线观看最新| 中文字幕av日韩精品| 欧美美女一区二区在线观看| 国产精品99久久| 天天草夜夜草| 青青草一区二区| 国产精品免费av| 亚洲精品18| 人妻少妇被粗大爽9797pw| 亚洲欧美日韩高清| 麻豆精品一区二区综合av| 国产裸舞福利在线视频合集| 4438全国亚洲精品在线观看视频| 97久久人人超碰| 欧洲亚洲精品久久久久| 男人草女人视频| 精品无人国产偷自产在线| 久久精品国产久精国产| 久久亚洲资源| 亚洲欧美久久久久一区二区三区| 91精品国产一区二区| 国产美女诱惑一区二区| 欧美人xxx| 日韩国产伦理| 精品国产亚洲在线| 精品一区二区三区在线观看| 17videosex性欧美| 日本一级淫片演员| 国产一区二区黄| 99r国产精品| www国产精品| 成人手机在线| 国产日本欧美在线观看 | 亚洲性人人天天夜夜摸| eeuss影院www在线播放| 国产精品麻豆免费版| 在线播放日韩导航| 日韩av在线发布| 亚洲深夜视频| 少妇无码av无码专区在线观看| 中国人与牲禽动交精品| 久久日一线二线三线suv| 77成人影视| 中文字幕123| 国产伦精品一区二区三| 欧美一级高清大全免费观看| 久久电影网站中文字幕| 狂野欧美性猛交xxxx| 国产精品视频中文字幕| 成人激情视频网| 日韩欧美国产午夜精品| 国产精品888| 麻豆精品av| 加勒比一区二区三区在线| 免费影院在线观看一区| 日韩电影中文字幕在线观看| 91丝袜美腿高跟国产极品老师| 亚洲自拍都市欧美小说| caoporn国产精品免费视频| 神马影院一区二区| www国产精品com| 亚洲精品视频在线观看免费| 激情综合视频| 99久久综合国产精品二区| 成人av影视| 99爱精品视频| 日韩av中文在线| 中文字幕成人网| 欧美第十八页| 黄色在线观看www| 成人18免费入口| 精品国产一区二区三| 色七七影院综合| 欧美日韩国产在线播放| 美女网站一区二区| 国产精品毛片av| a天堂中文在线88| 欧美日韩精品在线一区二区 | 国产欧美日韩精品高清二区综合区| 国产中文字幕在线视频| 精品国产无码在线| 欧美成人一二三| 欧美视频三区在线播放| 成人爱爱电影网址| 欧美精选一区| 青草综合视频| av影片免费在线观看| 91丨porny丨探花| 国产激情一区二区三区在线观看| 中文字幕欧美亚洲| 欧美自拍偷拍午夜视频| 久久精品无码一区二区三区| 日韩高清不卡在线| 亚洲视频电影在线| 精品欧美午夜寂寞影院| zzzwww在线看片免费| 有色激情视频免费在线|