任务配置
新建一个Jenkins任务
选择构建一个自由风格的软件项目
进去,直接把页面拉到最后,找到构建操作,选择执行Shell
构建的Shell脚本如下:
Shell脚本内容:
# 远程服务器地址 执行的脚本 环境 代码分支 远程部署的主机 服务名称 打包ssh 1.1.1.1 "/opt/scripts/deploy.sh env branch host ervice pack"# 判断打包是否成功if [ "$?"x != "0"x ];then echo "打包失败......."exit 1fi# 远程服务器地址 执行的脚本 环境 代码分支 远程部署的主机 服务名称 部署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() {if [ "$BRANCH"x == "online"x ];thengit fetch --allgit reset --hard origin/mastergit pull origin master:masterelsegit fetch --allgit reset --hard origin/$BRANCHgit pull origin $BRANCH:$BRANCHfi}# 克隆代码clone_code() {if [ "$BRANCH"x == "online"x ];thengit clone -b master git@gitlab.hxq.cn:java/${1}.gitelsegit clone -b $BRANCH git@gitlab.hxq.cn:java/${1}.gitfi}# 打包pack() {# 判断打包目录是否存在if [ ! -d $PACK_PATH/$SERVICE_${ENV} ];thenmkdir $PACK_PATH/${SERVICE}_${ENV}ficd ${PACK_PATH}/${SERVICE}_${ENV}# 判断服务目录是否存在if [ ! -d $SERVICE ];thenclone_code $SERVICEfi# 更新本地Git代码update_code# 执行打包命令mvn clean install -Dmaven.repo.local=/root/.m2/repository}# 部署deploy() {# 判断远程备份目录是否存在 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# 解压远程主机的war包到指定目录ssh $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

9129

被折叠的 条评论
为什么被折叠?



