任務配置
新建一個Jenkins任務
選擇構建一個自由風格的軟件項目
進去,直接把頁面拉到最後,找到構建操作,選擇執行Shell
構建的Shell腳本如下:
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
其他端有需要的小夥伴,可以私信我,給你們需要的部署腳本
閱讀更多 執筆寫人生 的文章