神操作,一條命令搞定Jenkins自動化上線部署應用程序

神操作,一條命令搞定Jenkins自動化上線部署應用程序

神操作,一條命令搞定Jenkins自動化上線部署應用程序

任務配置

新建一個Jenkins任務

神操作,一條命令搞定Jenkins自動化上線部署應用程序

選擇構建一個自由風格的軟件項目

神操作,一條命令搞定Jenkins自動化上線部署應用程序

進去,直接把頁面拉到最後,找到構建操作,選擇執行Shell

神操作,一條命令搞定Jenkins自動化上線部署應用程序

構建的Shell腳本如下:

神操作,一條命令搞定Jenkins自動化上線部署應用程序

Shell腳本內容:

# 遠程服務器地址 執行的腳本 環境 代碼分支 遠程部署的主機\t 服務名稱 打包
ssh 1.1.1.1 "/opt/scripts/deploy.sh env branch host ervice pack"

# 判斷打包是否成功
if [ "$?"x != "0"x ];then
\techo "打包失敗......."
\texit 1
fi

# 遠程服務器地址 執行的腳本 環境 代碼分支 遠程部署的主機\t 服務名稱 部署
ssh 1.1.1.1 "/opt/scripts/deploy.sh env branch host ervice deploy"

Jenkins服務器上面的腳本內容如下:

Java項目

#!/bin/bash
#
# 部署環境
ENV=$1
# 部署的代碼Git分支
BRANCH=$2
# 部署的遠程服務器IP地址
HOST=$3
# 部署的服務名稱
SERVICE=$4
# 本地Maven打包的路徑
PACK_PATH=/opt/pack/$ENV

# 更新Git代碼
update_code() {
\tif [ "$BRANCH"x == "online"x ];then
\t\tgit fetch --all

\t\tgit reset --hard origin/master
\t\tgit pull origin master:master
\telse
\t\tgit fetch --all
\t\tgit reset --hard origin/$BRANCH
\t\tgit pull origin $BRANCH:$BRANCH
\tfi
}

# 克隆代碼
clone_code() {
\tif [ "$BRANCH"x == "online"x ];then
\t\tgit clone -b master [email protected]:java/${1}.git
\telse
\t\tgit clone -b $BRANCH [email protected]:java/${1}.git
\tfi
}

# 打包
pack() {
\t# 判斷打包目錄是否存在
\tif [ ! -d $PACK_PATH/$SERVICE_${ENV} ];then
\t\tmkdir $PACK_PATH/${SERVICE}_${ENV}
\tfi

\tcd ${PACK_PATH}/${SERVICE}_${ENV}

\t# 判斷服務目錄是否存在
\tif [ ! -d $SERVICE ];then
\t\tclone_code $SERVICE
\tfi
\t
\t# 更新本地Git代碼
\tupdate_code

\t# 執行打包命令
\tmvn clean install -Dmaven.repo.local=/root/.m2/repository
}

# 部署
deploy() {
\t# 判斷遠程備份目錄是否存在
ssh $HOST "if [ ! -d /opt/bak/$SERVICE ];then mkdir /opt/bak/$SERVICE;fi"

# 拷貝war包到目標主機的備份目錄

scp $PACK_PATH/${SERVICE}_${ENV}/$SERVICE/target/${SERVICE}.war ${HOST}:/opt/bak/$SERVICE
\t
\t# 解壓遠程主機的war包到指定目錄
\tssh $HOST "cd /opt/bak/$SERVICE; unzip ${SERVICE}.war -d $service"

# 重啟遠程主機服務
ssh $HOST "cd /opt/soft/tomat ; ./bin/catalina.sh stop ; sleep 1 ; rm -rf webapps/* ; mv /opt/bak/$SERVICE/$service/* webapps/ ; ./bin/catalina.sh start"
}

case $5 in
pack)
pack;;
deploy)
deploy;;
*)
echo "USAGE:$0 env branch host service pack|deploy"
esac


其他端有需要的小夥伴,可以私信我,給你們需要的部署腳本


分享到:


相關文章: