GitBucket
4.6.0
Toggle navigation
Sign in
Files
Branches
1
Tags
Issues
Pull Requests
Labels
Milestones
Wiki
08335
/
hivui-platform-template
hivui平台项目模板
Browse code
Merge branch 'master' of http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template
master
commit
60027c89dd49b04cda02a4c982b143dd29453793
2 parents
977eb1f
+
98aa159
hhb
authored
on 21 Mar 2022
Showing
3 changed files
build/bin/oper.sh
build/copyBaseAssets.js
doc/服务器操作.txt
Ignore Space
Show notes
View
build/bin/oper.sh
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: oper.sh # 用户名 # 项目名 # 操作 (create , restart , start , kill , stop , del , build , sync) # 部署路径 (upload) # 同步内容 (node_modules , build , cli) cmdDir=$( cd $(dirname "$0") pwd ) username=$1 # 用户名 projectName=$2 # 项目名 cmd=$3 # 命令 port=$4 # 端口 domain_name=$5 # 域名 # *.pre2.hieap.cn==>http://192.168.4.192:8001 # *.pre.hieap.cn==>http://192.168.10.242:31167 # ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` # tagIp193="192.168.4.193" # if [[ $ip == *$tagIp193* ]]; then # DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # elif [[]];then # # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 # DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # else # # pass 环境 对外 # DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # fi domain_193='192.168.4.106' domain_open2='open2.hieap.cn' domain_open='open.hieap.cn' if [[ $domain_name == *$domain_193* ]];then DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open2* ]];then # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open* ]];then # pass 环境 对外 DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi # tagIp192="192.168.4.192" nginxStr='' function getNginx(){ nginxStr='' # if [[ $ip == *$tagIp193* ]]; then # nginxStr='' # elif [[ $ip == *$tagIp192* ]]; then # # *.pre2.hieap.cn==>http://192.168.4.192:8001 # # 宿主机 4.110 ,docker 内ip 172.20.0.3 # # 内网用户ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' # else # # *.pre.hieap.cn==>http://192.168.10.242:32467 # # pass 下的 外网用户 ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' # fi if [[ $domain_name == *$domain_193* ]];then nginxStr='' fi if [[ $domain_name == *$domain_open2* ]];then # *.pre2.hieap.cn==>http://192.168.4.192:8001 # 宿主机 4.110 ,docker 内ip 172.20.0.3 # 内网用户ng 配置 nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' fi if [[ $domain_name == *$domain_open* ]];then # *.pre.hieap.cn==>http://192.168.10.242:32467 # pass 下的 外网用户 ng 配置 nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' fi } #BASH_SOURCE[0]用户所在的目录到脚本的路径 ## 获取eap5.0 路径 # eap5Dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" eap5Dir="${cmdDir%/hiruntime*}" projectPath=${eap5Dir}/desktop/preview tmpPath=${eap5Dir}/hiruntime/project/desktop/project-template source='' source=$source'\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source=$source'\n\t<script src="\/'${projectName}'\/setting\/desktop\/development.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>' source=$source'\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source=$source'\n\t<script src="${serverPath}\/render\/'${username}'\/'${projectName}'\/setting\/desktop\/appsetting.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>\n' viteStr='' viteStr=$viteStr'let socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`;' viteStr=$viteStr'let socketHostSplit = socketHost.split(".");' viteStr=$viteStr'let reg=/^[0-9]*$/gi;' viteStr=$viteStr'if(reg.test(socketHostSplit[0])==false){socketHost = socketHost.substring(0,socketHost.indexOf(":"));}' nrm del zhc nrm add zhc http://npm.hieap.cn/ nrm use zhc case $cmd in "create") #创建 echo '正在创建桌面端应用...'$(date +%F%n%T) #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "创建项目命令参数不对:$*" echo "创建项目命令正确参数:用户名 项目名 create 桌面预览端口" exit 1 fi # source ${cmdDir}/var_env.sh # echo ${DEV_BASE_API} echo eap5Dir: ${eap5Dir} echo projectPath: ${projectPath} if [ ! -d "${projectPath}/${username}" ];then mkdir "${projectPath}/${username}" #创用户工作空间 fi if [ -d "${projectPath}/${username}/${projectName}" ];then echo "项目名已经存在!" exit 1 fi echo "<1>git正在拉取web端项目基础文件" git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${projectPath}/${username}/${projectName}/deploy" echo "<2>初始化node环境..." # rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ # cp这个命令在复制零碎文件的时候是很慢的 rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ cd ${projectPath}/${username}/${projectName}/deploy/ rm -rf ./build/bin rm -rf ./doc echo "<3>初始化相关配置..." ## 修改模板,重命项目名 mv project ${projectName} sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' .env.development ## 替换 package.json 的 name 值 author值 ,打包时候输出静态地址是这个 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${username}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js echo "<4>配置Nginx环境" # /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/conf getNginx $port sed -i "/${projectName}.${username}.pre/d" nginx.conf sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "<5>配置node_modules/vite环境" # node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "<6>正在启动服务..." cd ${projectPath}/${username}/${projectName}/deploy/ npm run pm2:start pm2 save echo "桌面端创建完毕!"$(date +%F%n%T) exit 1 ;; "delete") #删除 #参数个数判断,至少3个 if [ $# -lt 3 ];then echo "删除项目命令参数不对:$*" echo "删除项目命令正确参数:用户名 项目名 delete" exit 1 fi if [ $username = "admin" -a $projectName = "systpl" ] ; then echo "系统模板,不可删除!" exit 1 fi curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi # 删除配nginx cd /usr/local/nginx/conf #删除 sed -i "/${projectName}.${username}.pre/d" nginx.conf # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload ### 删除用户项目 rm -rf ${projectPath}/${username}/${projectName} echo "用户:${username} 项目:${projectName} 删除成功!" pm2 save exit 1 ;; "restart") #重启 echo "》》》正在重启服务..." curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi cd ${projectPath}/${username}/${projectName}/deploy/ npm run rm:vite npm run pm2:start pm2 save echo "已经重启服务!!" exit 1 ;; "build") #编译 uploadPath=$4 modules=$5 #参数个数判断,至少3个 # if [ $# -lt 4 ];then # echo "编译项目命令参数不对:$*" # echo "编译项目命令正确参数:用户名 项目名 build 上传服务器路径 [指定编译模块]" # exit 1 # fi # 1)使用编译方案,判断 modules 是否为.json文件 # 2)读取文件 参数 $5 的json文件路径,并转对应变量 # data=$(cat /eap5.0/desktop/preview/0000206/jwjx/deploy/jwjx/deploy/desktop/JieWeiJiaXing/dpdst/1.0.0/deploy/JieWeiJiaXing.json | sed -r 's/",/"/' | egrep -v '^[{}]' | sed 's/"//g' | sed 's/:/=/1') # 3)#声明变量 将json文件中的key value 转为 变量 # declare $data # 4)使用变量 # echo $dtvs $appSetting $server # 模块 # modules=$dtvs ### 设置环境变量 # cd ${projectPath}/${username}/${projectName}/deploy/ # sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"${server}/render/${username}"'#g' .env.production # appsetting配置文件 # cd ${projectPath}/${username}/${projectName}/deploy/ # rm -rf "./dist/setting/desktop/appsetting.js" # rsync -auz "${appSetting}" "./dist/${username}/${projectName}/setting/desktop/" # $server 一般值是 /e5 ,然后用这个去替appsetting.js 文件里 "/e5 的字符 # var server = "/e5"; # var oauth = "/e5"; # var deployRoot="/e5/render" # cd "./dist/setting/desktop" # sed -i 's#\(server \?= \?\).*#\1'"\"${server}\""'#g' appsetting.js # sed -i 's#\(oauth \?= \?\).*#\1'"\"${server}\""'#g' appsetting.js # sed -i 's#\(deployRoot \?= \?\).*#\1'"\"${server}/render\""'#g' appsetting.js ### 用pm2管理,用pm2 重启指定的 rm -rf "${projectPath}/${username}/${projectName}/deploy/dist" cd "${projectPath}/${username}/${projectName}/deploy" buildFlag="building.txt" # touch filename if [ ! -f "$buildFlag" ];then touch "$buildFlag" else echo "已经处于编译状态,请等待..." exit 1; fi if [ ! $modules ]; then echo "正在执行编译所有模块..."$(date +%F%n%T) npm run build ### 编译所有的时候要考相关配置 cd "${projectPath}/${username}/${projectName}/deploy/" if [[ ! -d "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" ]]; then mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" fi rsync -auz "${projectPath}/${username}/${projectName}/deploy/${projectName}/funclib/desklib" "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/" else echo "正在执行编译【指定模块】..."$(date +%F%n%T) npm run build:modules $modules fi rm -rf "$buildFlag" ## 删除之前打包文件 rm -rf "${username}_${projectName}.zip" cd "${projectPath}/${username}/${projectName}/deploy/dist" mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${username}/${projectName}" rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" "${projectPath}/${username}/${projectName}/deploy/dist/${username}/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" zip -q -r "${username}_${projectName}.zip" ./* rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" "${projectPath}/${username}/${projectName}/deploy/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" cd ${projectPath}/${username}/${projectName}/deploy/ if [ -z "$uploadPath" ]; then echo '未传服务器路径,请自行拷贝!' exit 1; fi if [[ ! -d "$uploadPath" ]]; then echo "编译命令: 上传文件夹不存在, 正在帮您创建目录..." mkdir -p "${uploadPath}" fi echo "正在拷到服务器目录:${uploadPath}" cp -fv "${username}_${projectName}.zip" "${uploadPath}" echo "(‐^▽^‐) 编译打包成功!"$(date +%F%n%T) ;; "sync") #同步环境 #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "同步项目命令参数不对:$*" echo "同步项目命令正确参数:用户名 项目名 sync 同步方式" exit 1 fi way=$4 if [ $way = 'sysfunc' ];then #同步系统功能 sysfuncFlagPath="${projectPath}/${username}/${projectName}/hc-birt-platf-更新中" if [[ ! -d "${sysfuncFlagPath}" ]]; then mkdir -p "${sysfuncFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi echo "》》》同步系统功能..."$(date +%F%n%T) git clone http://192.168.4.105:8080/gitbucket/git/js-team2/zhc-birt-platf.git ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf rm -rf ${eap5Dir}/hiruntime/project/desktop/zhc-birt-platf rsync -auz ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf/project/* ${eap5Dir}/hiruntime/workspace/${username}/${projectName}/ rm -rf ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf echo "》》》系统功能已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${sysfuncFlagPath}" exit fi if [ $way = 'nginx' ];then #nginx环境 #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf echo '删除nginx相关配置!' #添加 sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf echo ${nginxStr} echo '添加nginx相关配置!' cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "》》》nginx环境已同步!" exit 1; fi # 以下注释不能用,多人点击同步文件会缺失 # rm -rf ${eap5Dir}/hiruntime/project/desktop/project-template # rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp ${eap5Dir}/hiruntime/project/desktop/project-template # rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp case $way in "build") #同步打包环境 echo "》》》正在同步打包环境..."$(date +%F%n%T) rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ echo "》》》打包环境已同步!"$(date +%F%n%T) exit 1 ;; "hiui") #同步hiui资源库 echo "》》》正在同步hi-ui库..."$(date +%F%n%T) cd "${tmpPath}/" hiuiFlagPath="${projectPath}/${username}/${projectName}/hi-ui-更新中" if [[ ! -d "${hiuiFlagPath}" ]]; then mkdir -p "${hiuiFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-ui版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "hiui已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${hiuiFlagPath}" ;; "taskcenter") #同步环境 echo "》》》正在同步任务中心..."$(date +%F%n%T) cd "${tmpPath}/" taskcenterFlagPath="${projectPath}/${username}/${projectName}/hi-taskcenter-更新中" if [[ ! -d "${taskcenterFlagPath}" ]]; then mkdir -p "${taskcenterFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i zhc-flowchart -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/zhc-flowchart rsync -auz ${tmpPath}/node_modules/zhc-flowchart ${projectPath}/${username}/${projectName}/deploy/node_modules/ npm i hi-taskcenter -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter rsync -auz ${tmpPath}/node_modules/hi-taskcenter ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-taskcenter版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "任务中心已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${taskcenterFlagPath}" ;; "cli") #程序环境 echo "开始同步..."$(date +%F%n%T) if [[ ! -d "${eap5Dir}/hiruntime/project/desktop/__gittmp" ]]; then #可以更新 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git ${eap5Dir}/hiruntime/project/desktop/__gittmp rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp/ ${tmpPath} else echo "已经相关人员同步中,请稍候..."; exit 1; fi rsync -auz ${tmpPath}/assets_platform ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/index.html ${projectPath}/${username}/${projectName}/deploy rsync -auz ${tmpPath}/template.html ${projectPath}/${username}/${projectName}/deploy/ echo "》》》静态共用库已同步!" rsync -auz ${tmpPath}/project/hivuiLogin ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》登录模板已同步!" rsync -auz ${tmpPath}/project/hivuiMain ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》主页模板已同步!" rsync -auz ${tmpPath}/project/hivuiBirt ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》报表模板同步!" cd "${tmpPath}/" npm i # npm rebuild rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ echo "》》》node环境已同步!" cd "${tmpPath}/" npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ echo "》》》hi-ui库已同步!" rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.env.development ${projectPath}/${username}/${projectName}/deploy/.env.development rsync -auz ${tmpPath}/.env.production ${projectPath}/${username}/${projectName}/deploy/.env.production rsync -auz ${tmpPath}/.env.staging ${projectPath}/${username}/${projectName}/deploy/.env.staging rsync -auz ${tmpPath}/vite.config.js ${projectPath}/${username}/${projectName}/deploy/vite.config.js echo "》》》已同步程序环境(build、babel.config.js、.postcssrc.js、.browserslistrc、vite-plugin、.env.development、.env.production、.env.staging、vite.config.js)..." # source ${cmdDir}/var_env.sh ### 设置环境变量 cd ${projectPath}/${username}/${projectName}/deploy/ sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.staging ### node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client # sed 's/要替换的内容/新的内容/' # 将所有的数字替换成内容 # sed 's/[0-9]/好的/g' testFile2.txt sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "》》》程序环境已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp ;; esac rsync -auz ${tmpPath}/package.json ${projectPath}/${username}/${projectName}/deploy/package.json cd ${projectPath}/${username}/${projectName}/deploy/ ## 替换 package.json 的 name 值 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum sed -i 's#\("dev": \?"\).*#\1'"vite --host --port ${portNum}"'",#g' package.json echo "》》》正在重启服务..."$(date +%F%n%T) pm2 stop "vite-${username}-${projectName}" pm2 delete "vite-${username}-${projectName}" npm run rm:vite npm run pm2:start pm2 save echo "》》》已经重启服务!!"$(date +%F%n%T) ;; esac
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: oper.sh # 用户名 # 项目名 # 操作 (create , restart , start , kill , stop , del , build , sync) # 部署路径 (upload) # 同步内容 (node_modules , build , cli) cmdDir=$( cd $(dirname "$0") pwd ) username=$1 # 用户名 projectName=$2 # 项目名 cmd=$3 # 命令 port=$4 # 端口 domain_name=$5 # 域名 # *.pre2.hieap.cn==>http://192.168.4.192:8001 # *.pre.hieap.cn==>http://192.168.10.242:31167 # ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` # tagIp193="192.168.4.193" # if [[ $ip == *$tagIp193* ]]; then # DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # elif [[]];then # # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 # DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # else # # pass 环境 对外 # DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # fi domain_193='192.168.4.106' domain_open2='open2.hieap.cn' domain_open='open.hieap.cn' if [[ $domain_name == *$domain_193* ]];then DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open2* ]];then # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open* ]];then # pass 环境 对外 DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi # tagIp192="192.168.4.192" nginxStr='' function getNginx(){ nginxStr='' # if [[ $ip == *$tagIp193* ]]; then # nginxStr='' # elif [[ $ip == *$tagIp192* ]]; then # # *.pre2.hieap.cn==>http://192.168.4.192:8001 # # 宿主机 4.110 ,docker 内ip 172.20.0.3 # # 内网用户ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' # else # # *.pre.hieap.cn==>http://192.168.10.242:32467 # # pass 下的 外网用户 ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' # fi if [[ $domain_name == *$domain_193* ]];then nginxStr='' fi if [[ $domain_name == *$domain_open2* ]];then # *.pre2.hieap.cn==>http://192.168.4.192:8001 # 宿主机 4.110 ,docker 内ip 172.20.0.3 # 内网用户ng 配置 nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' fi if [[ $domain_name == *$domain_open* ]];then # *.pre.hieap.cn==>http://192.168.10.242:32467 # pass 下的 外网用户 ng 配置 nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' fi } #BASH_SOURCE[0]用户所在的目录到脚本的路径 ## 获取eap5.0 路径 # eap5Dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" eap5Dir="${cmdDir%/hiruntime*}" projectPath=${eap5Dir}/desktop/preview tmpPath=${eap5Dir}/hiruntime/project/desktop/project-template source='' source=$source'\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source=$source'\n\t<script src="\/'${projectName}'\/setting\/desktop\/development.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>' source=$source'\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source=$source'\n\t<script src="${serverPath}\/render\/'${username}'\/'${projectName}'\/setting\/desktop\/appsetting.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>\n' viteStr='' viteStr=$viteStr'let socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`;' viteStr=$viteStr'let socketHostSplit = socketHost.split(".");' viteStr=$viteStr'let reg=/^[0-9]*$/gi;' viteStr=$viteStr'if(reg.test(socketHostSplit[0])==false){socketHost = socketHost.substring(0,socketHost.indexOf(":"));}' nrm del zhc nrm add zhc http://npm.hieap.cn/ nrm use zhc case $cmd in "create") #创建 echo '正在创建桌面端应用...'$(date +%F%n%T) #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "创建项目命令参数不对:$*" echo "创建项目命令正确参数:用户名 项目名 create 桌面预览端口" exit 1 fi # source ${cmdDir}/var_env.sh # echo ${DEV_BASE_API} echo eap5Dir: ${eap5Dir} echo projectPath: ${projectPath} if [ ! -d "${projectPath}/${username}" ];then mkdir "${projectPath}/${username}" #创用户工作空间 fi if [ -d "${projectPath}/${username}/${projectName}" ];then echo "项目名已经存在!" exit 1 fi echo "<1>git正在拉取web端项目基础文件" git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${projectPath}/${username}/${projectName}/deploy" echo "<2>初始化node环境..." # rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ # cp这个命令在复制零碎文件的时候是很慢的 rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ cd ${projectPath}/${username}/${projectName}/deploy/ rm -rf ./build/bin rm -rf ./doc echo "<3>初始化相关配置..." ## 修改模板,重命项目名 mv project ${projectName} sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' .env.development ## 替换 package.json 的 name 值 author值 ,打包时候输出静态地址是这个 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${username}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js echo "<4>配置Nginx环境" # /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/conf getNginx $port sed -i "/${projectName}.${username}.pre/d" nginx.conf sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "<5>配置node_modules/vite环境" # node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "<6>正在启动服务..." cd ${projectPath}/${username}/${projectName}/deploy/ npm run pm2:start pm2 save echo "桌面端创建完毕!"$(date +%F%n%T) exit 1 ;; "delete") #删除 #参数个数判断,至少3个 if [ $# -lt 3 ];then echo "删除项目命令参数不对:$*" echo "删除项目命令正确参数:用户名 项目名 delete" exit 1 fi if [ $username = "admin" -a $projectName = "systpl" ] ; then echo "系统模板,不可删除!" exit 1 fi curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi # 删除配nginx cd /usr/local/nginx/conf #删除 sed -i "/${projectName}.${username}.pre/d" nginx.conf # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload ### 删除用户项目 rm -rf ${projectPath}/${username}/${projectName} echo "用户:${username} 项目:${projectName} 删除成功!" pm2 save exit 1 ;; "restart") #重启 echo "》》》正在重启服务..." curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi cd ${projectPath}/${username}/${projectName}/deploy/ npm run rm:vite npm run pm2:start pm2 save echo "已经重启服务!!" exit 1 ;; "build") #编译 uploadPath=$4 modules=$5 #参数个数判断,至少3个 # if [ $# -lt 4 ];then # echo "编译项目命令参数不对:$*" # echo "编译项目命令正确参数:用户名 项目名 build 上传服务器路径 [指定编译模块]" # exit 1 # fi # 1)使用编译方案,判断 modules 是否为.json文件 # 2)读取文件 参数 $5 的json文件路径,并转对应变量 # data=$(cat /eap5.0/desktop/preview/0000206/jwjx/deploy/jwjx/deploy/desktop/JieWeiJiaXing/dpdst/1.0.0/deploy/JieWeiJiaXing.json | sed -r 's/",/"/' | egrep -v '^[{}]' | sed 's/"//g' | sed 's/:/=/1') # 3)#声明变量 将json文件中的key value 转为 变量 # declare $data # 4)使用变量 # echo $dtvs $appSetting $server ### 用pm2管理,用pm2 重启指定的 rm -rf "${projectPath}/${username}/${projectName}/deploy/dist" cd "${projectPath}/${username}/${projectName}/deploy" buildFlag="building.txt" # touch filename if [ ! -f "$buildFlag" ];then touch "$buildFlag" else echo "已经处于编译状态,请等待..." exit 1; fi if [ ! $modules ]; then echo "正在执行编译所有模块..."$(date +%F%n%T) npm run build ### 编译所有的时候要考相关配置 cd "${projectPath}/${username}/${projectName}/deploy/" if [[ ! -d "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" ]]; then mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" fi rsync -auz "${projectPath}/${username}/${projectName}/deploy/${projectName}/funclib/desklib" "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/" else echo "正在执行编译【指定模块】..."$(date +%F%n%T) npm run build:modules $modules fi rm -rf "$buildFlag" ## 删除之前打包文件 rm -rf "${username}_${projectName}.zip" cd "${projectPath}/${username}/${projectName}/deploy/dist" mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${username}/${projectName}" rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" "${projectPath}/${username}/${projectName}/deploy/dist/${username}/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" zip -q -r "${username}_${projectName}.zip" ./* rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" "${projectPath}/${username}/${projectName}/deploy/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" cd ${projectPath}/${username}/${projectName}/deploy/ if [ -z "$uploadPath" ]; then echo '未传服务器路径,请自行拷贝!' exit 1; fi if [[ ! -d "$uploadPath" ]]; then echo "编译命令: 上传文件夹不存在, 正在帮您创建目录..." mkdir -p "${uploadPath}" fi echo "正在拷到服务器目录:${uploadPath}" cp -fv "${username}_${projectName}.zip" "${uploadPath}" echo "(‐^▽^‐) 编译打包成功!"$(date +%F%n%T) ;; "sync") #同步环境 #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "同步项目命令参数不对:$*" echo "同步项目命令正确参数:用户名 项目名 sync 同步方式" exit 1 fi way=$4 if [ $way = 'sysfunc' ];then #同步系统功能 sysfuncFlagPath="${projectPath}/${username}/${projectName}/hc-birt-platf-更新中" if [[ ! -d "${sysfuncFlagPath}" ]]; then mkdir -p "${sysfuncFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi echo "》》》同步系统功能..."$(date +%F%n%T) git clone http://192.168.4.105:8080/gitbucket/git/js-team2/zhc-birt-platf.git ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf rm -rf ${eap5Dir}/hiruntime/project/desktop/zhc-birt-platf rsync -auz ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf/project/* ${eap5Dir}/hiruntime/workspace/${username}/${projectName}/ rm -rf ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf echo "》》》系统功能已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${sysfuncFlagPath}" exit fi if [ $way = 'nginx' ];then #nginx环境 #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf echo '删除nginx相关配置!' #添加 sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf echo ${nginxStr} echo '添加nginx相关配置!' cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "》》》nginx环境已同步!" exit 1; fi # 以下注释不能用,多人点击同步文件会缺失 # rm -rf ${eap5Dir}/hiruntime/project/desktop/project-template # rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp ${eap5Dir}/hiruntime/project/desktop/project-template # rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp case $way in "build") #同步打包环境 echo "》》》正在同步打包环境..."$(date +%F%n%T) rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ echo "》》》打包环境已同步!"$(date +%F%n%T) exit 1 ;; "hiui") #同步hiui资源库 echo "》》》正在同步hi-ui库..."$(date +%F%n%T) cd "${tmpPath}/" hiuiFlagPath="${projectPath}/${username}/${projectName}/hi-ui-更新中" if [[ ! -d "${hiuiFlagPath}" ]]; then mkdir -p "${hiuiFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-ui版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "hiui已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${hiuiFlagPath}" ;; "taskcenter") #同步环境 echo "》》》正在同步任务中心..."$(date +%F%n%T) cd "${tmpPath}/" taskcenterFlagPath="${projectPath}/${username}/${projectName}/hi-taskcenter-更新中" if [[ ! -d "${taskcenterFlagPath}" ]]; then mkdir -p "${taskcenterFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i zhc-flowchart -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/zhc-flowchart rsync -auz ${tmpPath}/node_modules/zhc-flowchart ${projectPath}/${username}/${projectName}/deploy/node_modules/ npm i hi-taskcenter -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter rsync -auz ${tmpPath}/node_modules/hi-taskcenter ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-taskcenter版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "任务中心已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${taskcenterFlagPath}" ;; "cli") #程序环境 echo "开始同步..."$(date +%F%n%T) if [[ ! -d "${eap5Dir}/hiruntime/project/desktop/__gittmp" ]]; then #可以更新 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git ${eap5Dir}/hiruntime/project/desktop/__gittmp rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp/ ${tmpPath} else echo "已经相关人员同步中,请稍候..."; exit 1; fi rsync -auz ${tmpPath}/assets_platform ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/index.html ${projectPath}/${username}/${projectName}/deploy rsync -auz ${tmpPath}/template.html ${projectPath}/${username}/${projectName}/deploy/ echo "》》》静态共用库已同步!" rsync -auz ${tmpPath}/project/hivuiLogin ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》登录模板已同步!" rsync -auz ${tmpPath}/project/hivuiMain ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》主页模板已同步!" rsync -auz ${tmpPath}/project/hivuiBirt ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》报表模板同步!" cd "${tmpPath}/" npm i # npm rebuild rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ echo "》》》node环境已同步!" cd "${tmpPath}/" npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ echo "》》》hi-ui库已同步!" rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.env.development ${projectPath}/${username}/${projectName}/deploy/.env.development rsync -auz ${tmpPath}/.env.production ${projectPath}/${username}/${projectName}/deploy/.env.production rsync -auz ${tmpPath}/.env.staging ${projectPath}/${username}/${projectName}/deploy/.env.staging rsync -auz ${tmpPath}/vite.config.js ${projectPath}/${username}/${projectName}/deploy/vite.config.js echo "》》》已同步程序环境(build、babel.config.js、.postcssrc.js、.browserslistrc、vite-plugin、.env.development、.env.production、.env.staging、vite.config.js)..." # source ${cmdDir}/var_env.sh ### 设置环境变量 cd ${projectPath}/${username}/${projectName}/deploy/ sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.staging ### node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client # sed 's/要替换的内容/新的内容/' # 将所有的数字替换成内容 # sed 's/[0-9]/好的/g' testFile2.txt sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "》》》程序环境已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp ;; esac rsync -auz ${tmpPath}/package.json ${projectPath}/${username}/${projectName}/deploy/package.json cd ${projectPath}/${username}/${projectName}/deploy/ ## 替换 package.json 的 name 值 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum sed -i 's#\("dev": \?"\).*#\1'"vite --host --port ${portNum}"'",#g' package.json echo "》》》正在重启服务..."$(date +%F%n%T) pm2 stop "vite-${username}-${projectName}" pm2 delete "vite-${username}-${projectName}" npm run rm:vite npm run pm2:start pm2 save echo "》》》已经重启服务!!"$(date +%F%n%T) ;; esac
Ignore Space
Show notes
View
build/copyBaseAssets.js
var fsextra = require('fs-extra'); const path = require('path'); const packageConfig = require('../package.json'); const projectName = packageConfig.name == 'hi-vui-template' ? 'project' : packageConfig.name; function resolve(dir){ return path.resolve(__dirname,dir) } var fileList=[ [resolve(`../assets_platform/eap`),resolve(`../dist/assets_platform/eap`)], [resolve(`../assets_platform/element-ui`),resolve(`../dist/assets_platform/element-ui`)], [resolve(`../assets_platform/vendor_dll`),resolve(`../dist/assets_platform/vendor_dll`)], [resolve(`../assets_platform/vue`),resolve(`../dist/assets_platform/vue`)], [resolve(`../assets_platform/vue-router`),resolve(`../dist/assets_platform/vue-router`)], [resolve(`../assets_platform/vuex`),resolve(`../dist/assets_platform/vuex`)], [resolve(`../${projectName}/setting`),resolve(`../dist/${projectName}/setting`)], [resolve(`../${projectName}/funclib`),resolve(`../dist/${projectName}/funclib`)], ] for(var item of fileList){ fsextra.copy(item[0],item[1], function (err) { if (err) return console.error(err) // console.error('success! setting') }) //拷贝目录 }
var fsextra = require('fs-extra'); const path = require('path'); const packageConfig = require('../package.json'); const projectName = packageConfig.name == 'hi-vui-template' ? 'project' : packageConfig.name; function resolve(dir){ return path.resolve(__dirname,dir) } var fileList=[ [resolve(`../assets_platform/element-ui`),resolve(`../dist/assets_platform/element-ui`)], [resolve(`../assets_platform/vue`),resolve(`../dist/assets_platform/vue`)], [resolve(`../assets_platform/vue-router`),resolve(`../dist/assets_platform/vue-router`)], [resolve(`../assets_platform/vuex`),resolve(`../dist/assets_platform/vuex`)], [resolve(`../${projectName}/setting`),resolve(`../dist/${projectName}/setting`)], [resolve(`../assets_platform/vendor_dll`),resolve(`../dist/assets_platform/vendor_dll`)], [resolve(`../assets_platform/eap`),resolve(`../dist/assets_platform/eap`)], [resolve(`../${projectName}/funclib`),resolve(`../dist/${projectName}/funclib`)], // [resolve(`../assets_platform/element-ui2.15.3`),resolve(`../dist/assets_platform/element-ui2.15.3`)], // [resolve(`../assets_platform/vue2.6.14`),resolve(`../dist/assets_platform/vue2.6.14`)], ] for(var item of fileList){ fsextra.copy(item[0],item[1], function (err) { if (err) return console.error(err) // console.error('success! setting') }) //拷贝目录 }
Ignore Space
Show notes
View
doc/服务器操作.txt
# nginx 目录 /usr/local/nginx/sbin # 4.110 进入docker docker exec -it eap-hirun-dev /bin/bash docker restart 24850dc4b328 # 启动配置好的pm2 pm2 resurrect # pm2 路径 dump.pm2 cd /root/.pm2/ ----------------------------------------------------- 方法一:查看进程列表(条件过滤) ps -ef | grep nginx 方法二:直接查看进程pid ps -C nginx -o pid 方法三:通过端口判断 netstat -anp | grep :80 方法四:使用lsof命令来查看80端口是否有程序在运行 lsof -i:80 1、查看nginx 是否启动 ps -ef | grep nginx 2、主程序的 nginx 配指定端口启动 8001 查看 ip 映射情况 3、 --------------------------- 跨服务拷贝 rsync -auvz --exclude "backups" --exclude "history" /eap5.0/desktop/preview/0000221/cms/deploy/dist/0000221/cms root@192.168.4.193:/opt/eap5/cms/hiruntime/static/render/0000221/
# nginx 目录 /usr/local/nginx/sbin # 4.110 进入docker docker exec -it eap-hirun-dev /bin/bash # 启动配置好的pm2 pm2 resurrect # pm2 路径 dump.pm2 cd /root/.pm2/ ----------------------------------------------------- 方法一:查看进程列表(条件过滤) ps -ef | grep nginx 方法二:直接查看进程pid ps -C nginx -o pid 方法三:通过端口判断 netstat -anp | grep :80 方法四:使用lsof命令来查看80端口是否有程序在运行 lsof -i:80 1、查看nginx 是否启动 ps -ef | grep nginx 2、主程序的 nginx 配指定端口启动 8001 查看 ip 映射情况 3、 --------------------------- 跨服务拷贝 rsync -auvz --exclude "backups" --exclude "history" /eap5.0/desktop/preview/0000221/cms/deploy/dist/0000221/cms root@192.168.4.193:/opt/eap5/cms/hiruntime/static/render/0000221/
Show line notes below