配合参数化构建过程
image.png丢弃构建
image.png配置git
image.png写shell脚本
image.png#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server=(10.19.106.100)
Sdir=/u02/webapps
Ddir=/u02/webapps
Name=${DATE}-${git_version} #${git_version}是在jenkins界面定义的变量
#1)进入项目目录,将内容进行打包
#${WORKSPACE}是Jenkins的内置变量,表示构建目录的绝对路径
get_code(){
source /etc/profile
cnpm install --unsafe-perm
npm run build:prod
# tar zcf web-${Name}.tar.gz ./dist/*
cd ${WORKSPACE} && \
tar zcf ${Sdir}/web-${Name}.tar.gz ./dist/*
}
#2)将内容通过scp复制到web网页目录
scp_web_server(){
for hosts in ${web_server[*]}
do
scp -P 22022 -r ${Sdir}/web-${Name}.tar.gz root@${hosts}:/u02/webapps
ssh -p 22022 root@${hosts} "mkdir -p ${Ddir}/web-${Name} && \
tar zxf ${Sdir}/web-${Name}.tar.gz -C ${Ddir}/web-${Name}
rm -rf ${Ddir}/web && \
ln -s ${Ddir}/web-${Name} ${Ddir}/web"
done
}
rollback(){
back_file=$(ssh -p 22022 root@${web_server} "find /u02/webapps/ -maxdepth 1 -type d -name "web-*-${git_version}"")
for hosts in ${web_server[*]}
do
ssh -p 22022 root@${hosts} "rm -rf ${Ddir}/web && \
ln -s ${back_file} ${Ddir}/web"
done
}
deploy(){
get_code
scp_web_server
}
#判断之前是否部署过该版本的commit,如果没有部署则部署,如果有则提示已经部署过然后退出
#如果是回退,则不受限制
if [ ${deploy_env} == "deploy" ];then
if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
echo "你已经部署过该${git_version}版本"
exit 1
else
deploy
fi
elif [ ${deploy_env} == "rollback" ];then
rollback
fi
报错问题
网友评论