神操作,一条命令搞定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


其他端有需要的小伙伴,可以私信我,给你们需要的部署脚本


分享到:


相關文章: