编译视图
图1:编译打包视图
图2:测试环境多分支分布
插件:git Parameter
构建shell:
echo $JOB_NAME ${JOB_BASE_NAME}
npm -v
node -v
#npm install
npm run build
rm ${JOB_BASE_NAME}.tar.gz -rf
tar zcf ${JOB_BASE_NAME}.tar.gz dist/ node_modules/ server/ server.js favicon.ico
#打包
发布视图
图1:部署视图
图2:选择部署主机
插件:Persistent Parameter Plugin
package_name=${JOB_BASE_NAME#*-} #替换包文件夹名
package_dir=`echo $JOB_NAME|sed 's/deploy-//g'` #替换为包文件夹路径
echo -e "
Job目录: $JOB_NAME
Job名: ${JOB_BASE_NAME}
包文件夹路径: $package_dir
包文件夹名: $package_name
部署主机: $Deploy_host
"
function color_message()
{
case "$1" in
"Red_echo")
echo -e "\e[1;31m$2\e[0m"
;;
"Green_echo")
echo -e "\e[1;32m$2\e[0m"
;;
"Yellow_echo")
echo -e "\e[1;33m$2\e[0m"
;;
esac
}
## ---- 正常部署 ---- ##
Deploy_item() {
salt -E $Deploy_host cmd.run "\cp /home/admin/$package_name.tar.gz /usr/local/src/$package_name-old.tar.gz"
# 移动旧文件
salt -E $Deploy_host state.sls saltenv='ci' deploy-nodejs pillar="{WORKSPACE: '$package_dir', JOBNAME: '$package_name'}"
# salt.file模块推送新文件
}
## ---- 回滚 ---- ##
Rollback_item(){
salt -E $Deploy_host cmd.run "\cp /usr/local/src/$package_name-old.tar.gz /home/admin/$package_name.tar.gz"
# 恢复上一个版本包
}
## ---- 启动nodejs ---- ##
nodejs_done(){
salt -E $Deploy_host cmd.run "su - admin -c 'pm2 del all && rm /home/admin/adminProject -rf'"
# 停服务,删除文件夹
salt -E $Deploy_host cmd.run "su - admin -c 'mkdir /home/admin/adminProject && tar zxf /home/admin/$package_name.tar.gz -C /home/admin/adminProject'"
# 指定解压文件
salt -E $Deploy_host cmd.run "su - admin -c 'cd /home/admin/adminProject && pm2 start server.js'"
# 运行nodejs
}
## ---- 执行操作判断 ---- ##
if [ "$Openration"x == "Deploy"x ]; then
Deploy_item
nodejs_done
color_message Green_echo "$Deploy_host deploy success"
elif [ "$Openration"x == "Rollback"x ]; then
Rollback_item
nodejs_done
color_message Green_echo "$Deploy_host Rollback success"
else
color_message Red_echo "OPERATION set error, please check ..."
fi
插件:AnsiColor