new_branch.sh 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. #!/bin/bash
  2. #https://doc.huosdk.com/web/#/183?page_id=11285
  3. #TOP_PROJECT_DIR=$(dirname $(dirname $(dirname $(readlink -f "$0"))))
  4. #最原始项目路径
  5. OLD_PROJECT_DIR=/huosdk
  6. TOP_PROJECT_DIR=/code
  7. PROJECT_NAME=mp
  8. LN_UPLOAD=no
  9. BRANCH_PROJECT_DIR=${TOP_PROJECT_DIR}/branch/${PROJECT_NAME}
  10. DATE=`/bin/date +%Y%m%d`
  11. MASTER_PROJECT_DIR=${TOP_PROJECT_DIR}/${PROJECT_NAME}
  12. TEST_PROJECT_DIR=${MASTER_PROJECT_DIR}test
  13. BASE_PROJECT_DIR=${BRANCH_PROJECT_DIR}base
  14. OLD_BASE_PROJECT_DIR=${BRANCH_PROJECT_DIR}old
  15. NEW_PROJECT_DIR=${BRANCH_PROJECT_DIR}${DATE}
  16. if [ -d "${OLD_PROJECT_DIR}" ]; then
  17. du -h ${OLD_PROJECT_DIR} --max-depth=1
  18. fi
  19. TREE_INSTALL=$(rpm -qa | grep tree)
  20. if [ -z ${TREE_INSTALL} ]; then
  21. yum -y install tree
  22. fi
  23. RSYNC_INSTALL=$(rpm -qa | grep rsync)
  24. if [ -z ${RSYNC_INSTALL} ]; then
  25. yum -y install rsync
  26. fi
  27. tree ${TOP_PROJECT_DIR} -L 2
  28. add_test_php(){
  29. #新增所有test.php
  30. if [ -z $1 ]; then
  31. echo 'param error!'; return 0;
  32. fi
  33. TEST_PHP_PROJECT_DIR=$1
  34. #新增所有test.php
  35. if [ -d "${TEST_PHP_PROJECT_DIR}/public" ]; then
  36. INDEX_FILES=`find ${TEST_PHP_PROJECT_DIR}/public/* -type f -name "index.php"`
  37. for INDEX_FILE in ${INDEX_FILES}
  38. do
  39. TEST_PHP_ACCESS_DIR=$(dirname ${INDEX_FILE})
  40. if [[ -z ${TEST_PHP_ACCESS_DIR}/test.php ]];then
  41. touch ${TEST_PHP_ACCESS_DIR}/test.php
  42. fi
  43. echo -e "<?php \necho 'ok';" > ${TEST_PHP_ACCESS_DIR}/test.php
  44. done
  45. fi
  46. if [ -d "${TEST_PHP_PROJECT_DIR}/access" ]; then
  47. INDEX_FILES=`find ${TEST_PHP_PROJECT_DIR}/access/* -type f -name "index.php"`
  48. for INDEX_FILE in ${INDEX_FILES}
  49. do
  50. TEST_PHP_ACCESS_DIR=$(dirname ${INDEX_FILE})
  51. if [[ -z ${TEST_PHP_ACCESS_DIR}/test.php ]];then
  52. touch ${TEST_PHP_ACCESS_DIR}/test.php
  53. fi
  54. echo -e "<?php \necho 'ok';" > ${TEST_PHP_ACCESS_DIR}/test.php
  55. done
  56. fi
  57. }
  58. #设置主线
  59. set_master(){
  60. [ ! -d "${NEW_PROJECT_DIR}" ] && { echo "Error: ${NEW_PROJECT_DIR} not exist"; exit 0; }
  61. #修改域名去除TEST
  62. find ${NEW_PROJECT_DIR}/* -type f -name "domain.inc.php" -exec sed -i "s@^define(\"HTTP\".*);@define(\"HTTP\", 'http://');@" {} \;
  63. find ${NEW_PROJECT_DIR}/* -type f -name "domain.inc.php" -exec sed -i "s@^define(\"HTTPS\".*@define(\"HTTPS\", 'https://');@" {} \;
  64. #同步static文件到BASE目录
  65. if [ "${NEW_PROJECT_DIR}" == "${BASE_PROJECT_DIR}" ]; then
  66. STATIC_PROJECT_DIR=${OLD_BASE_PROJECT_DIR};
  67. else
  68. STATIC_PROJECT_DIR=${NEW_PROJECT_DIR};
  69. fi
  70. #rsync -avl --stats --progress ${STATIC_PROJECT_DIR}/public/static/ ${BASE_PROJECT_DIR}/public/static/
  71. #清理runtime
  72. RUNTIME_DIRS=`find ${NEW_PROJECT_DIR}/* -type d -name runtime`
  73. for RUNTIME_DIR in ${RUNTIME_DIRS}
  74. do
  75. chmod -R 777 ${RUNTIME_DIR}
  76. rm -rf ${RUNTIME_DIR}/*
  77. done
  78. add_test_php ${NEW_PROJECT_DIR}
  79. rm -rf ${MASTER_PROJECT_DIR}
  80. ln -s ${NEW_PROJECT_DIR} ${MASTER_PROJECT_DIR}
  81. #设置权限
  82. chmod 750 ${MASTER_PROJECT_DIR}/shell/set_auth.sh
  83. sh ${MASTER_PROJECT_DIR}/shell/set_auth.sh
  84. chmod 400 ${MASTER_PROJECT_DIR}/shell/set_auth.sh
  85. tree ${TOP_PROJECT_DIR} -L 2
  86. }
  87. #设置测试路径
  88. new_test_branch(){
  89. MASTER_PROJECT_DIR_REAL=$(readlink -f ${MASTER_PROJECT_DIR});
  90. TEST_PROJECT_DIR_REAL=$(readlink -f ${TEST_PROJECT_DIR});
  91. #判断测试路径是否已经存在
  92. if [[ -L "${TEST_PROJECT_DIR}" && "${MASTER_PROJECT_DIR_REAL}" != "${TEST_PROJECT_DIR_REAL}" ]]; then
  93. echo -e "\n${TEST_PROJECT_DIR} -> ${TEST_PROJECT_DIR_REAL} exist!\n"; exit 1;
  94. fi
  95. #判断对应目录是否存在 产生目录
  96. [ -d "${NEW_PROJECT_DIR}" ] && { echo "${NEW_PROJECT_DIR} exist"; exit 1; }
  97. mkdir -p ${NEW_PROJECT_DIR}
  98. #删除upload目录
  99. UPLOAD_DIR=`find ${NEW_PROJECT_DIR}/ -type d -name upload`
  100. rm -rf ${UPLOAD_DIR}
  101. #拷贝原有所有文件到此目录
  102. \cp -rf ${MASTER_PROJECT_DIR}/* ${NEW_PROJECT_DIR}/
  103. chmod -R 777 ${NEW_PROJECT_DIR}
  104. #清理runtime
  105. RUNTIME_DIRS=`find ${NEW_PROJECT_DIR}/* -type d -name runtime`
  106. for RUNTIME_DIR in ${RUNTIME_DIRS}
  107. do
  108. chmod -R 777 ${RUNTIME_DIR}
  109. rm -rf ${RUNTIME_DIR}/*
  110. done
  111. #UPLOAD软链接
  112. if [ -d "${BASE_PROJECT_DIR}/access/upload" ]; then
  113. NEW_PROJECT_UPLOAD_DIR=${NEW_PROJECT_DIR}/access/upload
  114. BASE_PROJECT_UPLOAD_DIR=${BASE_PROJECT_DIR}/access/upload
  115. #关联UPLOAD
  116. rm -rf ${NEW_PROJECT_UPLOAD_DIR}
  117. ln -s ${BASE_PROJECT_UPLOAD_DIR} ${NEW_PROJECT_UPLOAD_DIR}
  118. fi
  119. if [ -L "${BASE_PROJECT_DIR}/access/upload" ]; then
  120. NEW_PROJECT_UPLOAD_DIR=${NEW_PROJECT_DIR}/access/upload
  121. BASE_PROJECT_UPLOAD_DIR=$(readlink -f ${BASE_PROJECT_DIR}/access/upload)
  122. #关联UPLOAD
  123. rm -rf ${NEW_PROJECT_UPLOAD_DIR}
  124. ln -s ${BASE_PROJECT_UPLOAD_DIR} ${NEW_PROJECT_UPLOAD_DIR}
  125. fi
  126. if [ -d "${BASE_PROJECT_DIR}/public/upload" ]; then
  127. NEW_PROJECT_UPLOAD_DIR=${NEW_PROJECT_DIR}/public/upload
  128. BASE_PROJECT_UPLOAD_DIR=${BASE_PROJECT_DIR}/public/upload
  129. #关联UPLOAD
  130. rm -rf ${NEW_PROJECT_UPLOAD_DIR}
  131. ln -s ${BASE_PROJECT_UPLOAD_DIR} ${NEW_PROJECT_UPLOAD_DIR}
  132. fi
  133. if [ -L "${BASE_PROJECT_DIR}/public/upload" ]; then
  134. NEW_PROJECT_UPLOAD_DIR=${NEW_PROJECT_DIR}/public/upload
  135. BASE_PROJECT_UPLOAD_DIR=$(readlink -f ${BASE_PROJECT_DIR}/public/upload)
  136. #关联UPLOAD
  137. rm -rf ${NEW_PROJECT_UPLOAD_DIR}
  138. ln -s ${BASE_PROJECT_UPLOAD_DIR} ${NEW_PROJECT_UPLOAD_DIR}
  139. fi
  140. #修改域名添加TEST
  141. find ${NEW_PROJECT_DIR}/* -type f -name "domain.inc.php" -exec sed -i "s@^define(\"HTTP\".*@define(\"HTTP\", 'http://test');@" {} \;
  142. find ${NEW_PROJECT_DIR}/* -type f -name "domain.inc.php" -exec sed -i "s@^define(\"HTTPS\".*@define(\"HTTPS\", 'http://test');@" {} \;
  143. #关联test文件夹
  144. rm -rf ${TEST_PROJECT_DIR}
  145. ln -s ${NEW_PROJECT_DIR} ${TEST_PROJECT_DIR}
  146. add_test_php ${NEW_PROJECT_DIR}
  147. #设置所有debug请求为 TRUE
  148. find ${NEW_PROJECT_DIR}/* -type f -name "index.php" -exec sed -i "s@^define(\"APP_DEBUG\".*@define(\"APP_DEBUG\", true);@" {} \;
  149. chown -R rsynccode:www ${NEW_PROJECT_DIR}
  150. sh ${NEW_PROJECT_DIR}/shell/set_auth.sh 1
  151. tree ${TOP_PROJECT_DIR} -L 2
  152. echo -e "【ETL】 请手动处理\n【测试缓存开关】 请手动处理";
  153. }
  154. set_nginx(){
  155. #1检查测试域名是否存在
  156. CONF_DIR=/www/wdlinux/nginx/conf/vhost/
  157. OLD_CONF_DIR=/www/wdlinux/nginx/conf/vhost/old${DATE}
  158. #备份原有nginx配置
  159. if [ ! -d ${OLD_CONF_DIR}/ ];then
  160. mkdir -p ${OLD_CONF_DIR}
  161. fi
  162. \cp -rf ${CONF_DIR}* ${OLD_CONF_DIR}/
  163. if [ ! -d ${NGINX_OLD_DIR} ];then
  164. NGINX_DEMO_DIR=${BASE_PROJECT_DIR}/data/nginx/demo
  165. NGINX_DEV_DIR=${BASE_PROJECT_DIR}/data/nginx/dev
  166. NGINX_OLD_DIR=${BASE_PROJECT_DIR}/data/nginx/old
  167. else
  168. NGINX_DEMO_DIR=${OLD_PROJECT_DIR}/data/nginx/demo
  169. NGINX_DEV_DIR=${OLD_PROJECT_DIR}/data/nginx/dev
  170. NGINX_OLD_DIR=${OLD_PROJECT_DIR}/data/nginx/old
  171. fi
  172. #原有目录
  173. if [ ! -d ${NGINX_OLD_DIR} ];then
  174. mkdir -p ${NGINX_OLD_DIR}
  175. fi
  176. CHECK_CONF_DIR=`ls ${NGINX_OLD_DIR} | grep -i '.conf'`
  177. if [[ -z ${CHECK_CONF_DIR} ]];then
  178. #校验 NGINX_MASTER 目录
  179. if [ ! -d ${NGINX_DEMO_DIR} ];then
  180. mkdir -p ${NGINX_DEMO_DIR}
  181. fi
  182. rm -rf ${NGINX_DEMO_DIR}/*
  183. #校验 NGINX_DEV 目录
  184. if [ ! -d ${NGINX_DEV_DIR} ];then
  185. mkdir -p ${NGINX_DEV_DIR}
  186. fi
  187. rm -rf ${NGINX_DEV_DIR}/*
  188. #校验 NGINX_OLD 目录
  189. if [ ! -d ${NGINX_OLD_DIR} ];then
  190. mkdir -p ${NGINX_OLD_DIR}
  191. fi
  192. rm -rf ${NGINX_OLD_DIR}/*
  193. #备份原有配置
  194. \cp -rf ${CONF_DIR}/* ${NGINX_OLD_DIR}/
  195. #原有
  196. CONF_FILES=$(find ${NGINX_OLD_DIR}/* -name '*.conf' | xargs grep ${OLD_PROJECT_DIR} -l )
  197. for CONF_FILE in ${CONF_FILES}
  198. do
  199. \cp -rf ${CONF_FILE} ${NGINX_DEMO_DIR}/
  200. done
  201. #新增
  202. CONF_FILES=$(find ${NGINX_OLD_DIR}/* -name '*.conf' | xargs grep ${MASTER_PROJECT_DIR} -l )
  203. for CONF_FILE in ${CONF_FILES}
  204. do
  205. \cp -rf ${CONF_FILE} ${NGINX_DEMO_DIR}/
  206. done
  207. #删除测试域名
  208. rm -rf ${NGINX_DEMO_DIR}/test*
  209. #修改 NGINX_MASTER 路径
  210. sed -i "s@/${OLD_PROJECT_DIR};@/code${MASTER_PROJECT_DIR};@" ${NGINX_DEMO_DIR}/*
  211. sed -i "s@${OLD_PROJECT_DIR}/@/code${MASTER_PROJECT_DIR}/@" ${NGINX_DEMO_DIR}/*
  212. sed -i "s@${OLD_PROJECT_DIR};@/code${MASTER_PROJECT_DIR};@" ${NGINX_DEMO_DIR}/*
  213. sed -i "s@/code${MASTER_PROJECT_DIR}/@${MASTER_PROJECT_DIR}/@" ${NGINX_DEMO_DIR}/*
  214. sed -i "s@/code${MASTER_PROJECT_DIR}/@${MASTER_PROJECT_DIR}/@" ${NGINX_DEMO_DIR}/*
  215. sed -i "s@/code${MASTER_PROJECT_DIR}/@${MASTER_PROJECT_DIR}/@" ${NGINX_DEMO_DIR}/*
  216. CONF_FILES=$(ls ${NGINX_DEMO_DIR}/ | grep -i '.conf')
  217. for CONF_FILE in ${CONF_FILES}
  218. do
  219. if [ `grep -c 10080 ${NGINX_DEMO_DIR}/${CONF_FILE}` -eq '0' ]; then
  220. sed -i '/listen.*80/a listen 10080;' ${NGINX_DEMO_DIR}/${CONF_FILE}
  221. fi
  222. sed -i "s@.*listen .*10080;@ listen 10080;@" ${NGINX_DEMO_DIR}/${CONF_FILE}
  223. done
  224. \cp -rf ${NGINX_DEMO_DIR}/* ${NGINX_DEV_DIR}/
  225. pushd ${NGINX_DEV_DIR}/
  226. sed -i "s@${MASTER_PROJECT_DIR}/@${TEST_PROJECT_DIR}/@" ${NGINX_DEV_DIR}/*
  227. CONF_FILES=$(ls ${NGINX_DEV_DIR}/ | grep -i '.conf')
  228. for CONF_FILE in ${CONF_FILES}
  229. do
  230. HOSTNAME=`echo ${CONF_FILE%.*}`
  231. sed -i "s@#listen .*10080;@listen 10080;@" ${NGINX_DEV_DIR}/${CONF_FILE}
  232. sed -i "s@${HOSTNAME}@test${HOSTNAME}@" ${NGINX_DEV_DIR}/${CONF_FILE}
  233. sed -i "s@listen.*443.*@@" ${NGINX_DEV_DIR}/${CONF_FILE}
  234. sed -i "s@ssl on.*@@" ${NGINX_DEV_DIR}/${CONF_FILE}
  235. sed -i "s@ssl_.*@@" ${NGINX_DEV_DIR}/${CONF_FILE}
  236. sed -i "s@add_header Strict-Transport-Security max-age=15768000;@@" ${NGINX_DEV_DIR}/${CONF_FILE}
  237. mv ${NGINX_DEV_DIR}/${CONF_FILE} ${NGINX_DEV_DIR}/test${CONF_FILE}
  238. done
  239. popd
  240. NGINX_DEMO_DIR=${OLD_PROJECT_DIR}/data/nginx/demo
  241. NGINX_DEV_DIR=${OLD_PROJECT_DIR}/data/nginx/dev
  242. NGINX_OLD_DIR=${OLD_PROJECT_DIR}/data/nginx/old
  243. if [ ! -d ${OLD_BASE_PROJECT_DIR}/data/nginx/demo ];then
  244. mkdir -p ${OLD_BASE_PROJECT_DIR}/data/nginx/demo
  245. fi
  246. if [ ! -d ${BASE_PROJECT_DIR}/data/nginx/demo ];then
  247. mkdir -p ${BASE_PROJECT_DIR}/data/nginx/demo
  248. fi
  249. if [ ! -d ${TEST_PROJECT_DIR}/data/nginx/demo ];then
  250. mkdir -p ${TEST_PROJECT_DIR}/data/nginx/demo
  251. fi
  252. rsync -avl --stats --progress ${NGINX_DEMO_DIR}/* ${OLD_BASE_PROJECT_DIR}/data/nginx/demo/
  253. rsync -avl --stats --progress ${NGINX_DEV_DIR}/* ${OLD_BASE_PROJECT_DIR}/data/nginx/dev/
  254. rsync -avl --stats --progress ${NGINX_OLD_DIR}/* ${OLD_BASE_PROJECT_DIR}/data/nginx/old/
  255. rsync -avl --stats --progress ${NGINX_DEMO_DIR}/* ${BASE_PROJECT_DIR}/data/nginx/demo/
  256. rsync -avl --stats --progress ${NGINX_DEV_DIR}/* ${BASE_PROJECT_DIR}/data/nginx/dev/
  257. rsync -avl --stats --progress ${NGINX_OLD_DIR}/* ${BASE_PROJECT_DIR}/data/nginx/old/
  258. rsync -avl --stats --progress ${NGINX_DEMO_DIR}/* ${TEST_PROJECT_DIR}/data/nginx/demo/
  259. rsync -avl --stats --progress ${NGINX_DEV_DIR}/* ${TEST_PROJECT_DIR}/data/nginx/dev/
  260. rsync -avl --stats --progress ${NGINX_OLD_DIR}/* ${TEST_PROJECT_DIR}/data/nginx/old/
  261. #拷贝所有域名到正式目录下
  262. \cp -rf ${NGINX_DEMO_DIR}/* ${CONF_DIR}/
  263. \cp -rf ${NGINX_DEV_DIR}/* ${CONF_DIR}/
  264. echo -e "\cp ${NGINX_DEMO_DIR}/* ${CONF_DIR}/ \n"
  265. echo -e "\cp ${NGINX_DEV_DIR}/* ${CONF_DIR}/ \n"
  266. #检查域名配置
  267. /www/wdlinux/nginx/sbin/nginx -t
  268. echo -e '/www/wdlinux/nginx/sbin/nginx -t \n'
  269. echo -e '请检查配置 配置OK 请重启nginx \nservice nginx restart \nservice nginxd restart '
  270. else
  271. echo '域名已配置'
  272. fi
  273. }
  274. set_base(){
  275. #判断原始目录是否存在
  276. if [ ! -d "${OLD_PROJECT_DIR}" ]; then
  277. return 1;
  278. fi
  279. #设置权限
  280. #${OLD_PROJECT_DIR}/shell/set_auth.sh
  281. #判断目录是否存在
  282. if [ -d "${BASE_PROJECT_DIR}" ]; then
  283. if [ ! -L "${MASTER_PROJECT_DIR}" ]; then
  284. ln -s ${BASE_PROJECT_DIR} ${MASTER_PROJECT_DIR}
  285. fi
  286. if [ ! -L "${TEST_PROJECT_DIR}" ]; then
  287. ln -s ${BASE_PROJECT_DIR} ${TEST_PROJECT_DIR}
  288. fi
  289. #echo "${BASE_PROJECT_DIR} exist";
  290. return 1;
  291. fi
  292. #保存所有old文件
  293. mkdir -p ${OLD_BASE_PROJECT_DIR}
  294. #保存所有base文件
  295. mkdir -p ${BASE_PROJECT_DIR}
  296. if [ "${LN_UPLOAD}" == "no" ]; then
  297. #迁移原有目录到old目录
  298. rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' ${OLD_PROJECT_DIR}/* ${OLD_BASE_PROJECT_DIR}/
  299. #迁移原有目录到base目录
  300. rsync -al --exclude 'runtime' --exclude 'Runtime' ${OLD_PROJECT_DIR}/* ${BASE_PROJECT_DIR}/
  301. echo "rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' ${OLD_PROJECT_DIR}/* ${OLD_BASE_PROJECT_DIR}/"
  302. echo "rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' ${OLD_PROJECT_DIR}/* ${BASE_PROJECT_DIR}/"
  303. else
  304. #迁移原有目录到old目录
  305. rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' --exclude 'upload' ${OLD_PROJECT_DIR}/* ${OLD_BASE_PROJECT_DIR}/
  306. #迁移原有目录到base目录
  307. rsync -al --exclude 'runtime' --exclude 'Runtime' --exclude 'upload' ${OLD_PROJECT_DIR}/* ${BASE_PROJECT_DIR}/
  308. echo "rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' --exclude 'upload' ${OLD_PROJECT_DIR}/* ${OLD_BASE_PROJECT_DIR}/"
  309. echo "rsync -avl --stats --progress --exclude 'runtime' --exclude 'Runtime' --exclude 'upload' ${OLD_PROJECT_DIR}/* ${BASE_PROJECT_DIR}/"
  310. #UPLOAD软链接
  311. if [ -d "${OLD_PROJECT_DIR}/access/upload" ]; then
  312. OLD_BASE_PROJECT_DIR_UPLOAD_DIR=${OLD_BASE_PROJECT_DIR}/access/upload
  313. OLD_PROJECT_DIR_UPLOAD_DIR=${OLD_PROJECT_DIR}/access/upload
  314. BASE_PROJECT_DIR_UPLOAD_DIR=${BASE_PROJECT_DIR}/access/upload
  315. #关联UPLOAD
  316. rm -rf ${OLD_BASE_PROJECT_DIR_UPLOAD_DIR}
  317. ln -s ${OLD_PROJECT_DIR_UPLOAD_DIR} ${OLD_BASE_PROJECT_DIR_UPLOAD_DIR}
  318. rm -rf ${BASE_PROJECT_DIR_UPLOAD_DIR}
  319. ln -s ${OLD_PROJECT_DIR_UPLOAD_DIR} ${BASE_PROJECT_DIR_UPLOAD_DIR}
  320. fi
  321. if [ -d "${OLD_PROJECT_DIR}/public/upload" ]; then
  322. OLD_BASE_PROJECT_DIR_UPLOAD_DIR=${OLD_BASE_PROJECT_DIR}/public/upload
  323. OLD_PROJECT_DIR_UPLOAD_DIR=${OLD_PROJECT_DIR}/public/upload
  324. BASE_PROJECT_DIR_UPLOAD_DIR=${BASE_PROJECT_DIR}/public/upload
  325. #关联UPLOAD
  326. rm -rf ${OLD_BASE_PROJECT_DIR_UPLOAD_DIR}
  327. ln -s ${OLD_PROJECT_DIR_UPLOAD_DIR} ${OLD_BASE_PROJECT_DIR_UPLOAD_DIR}
  328. rm -rf ${BASE_PROJECT_DIR_UPLOAD_DIR}
  329. ln -s ${OLD_PROJECT_DIR_UPLOAD_DIR} ${BASE_PROJECT_DIR_UPLOAD_DIR}
  330. fi
  331. fi
  332. #生成 runtime
  333. find ${OLD_PROJECT_DIR} -type d -name runtime | sed "s@^${OLD_PROJECT_DIR}@mkdir -p ${OLD_BASE_PROJECT_DIR}@" | sh
  334. find ${OLD_PROJECT_DIR} -type d -name runtime | sed "s@^${OLD_PROJECT_DIR}@mkdir -p ${BASE_PROJECT_DIR}@" | sh
  335. find ${OLD_BASE_PROJECT_DIR} -type d -name runtime -exec chmod 777 {} \;
  336. find ${BASE_PROJECT_DIR} -type d -name runtime -exec chmod 777 {} \;
  337. #生成 Runtime
  338. find ${OLD_PROJECT_DIR} -type d -name Runtime | sed "s@^${OLD_PROJECT_DIR}@mkdir -p ${OLD_BASE_PROJECT_DIR}@" | sh
  339. find ${OLD_PROJECT_DIR} -type d -name Runtime | sed "s@^${OLD_PROJECT_DIR}@mkdir -p ${BASE_PROJECT_DIR}@" | sh
  340. find ${OLD_BASE_PROJECT_DIR} -type d -name Runtime -exec chmod 777 {} \;
  341. find ${BASE_PROJECT_DIR} -type d -name Runtime -exec chmod 777 {} \;
  342. if [ ! -L "${MASTER_PROJECT_DIR}" ]; then
  343. ln -s ${BASE_PROJECT_DIR} ${MASTER_PROJECT_DIR}
  344. fi
  345. if [ ! -L "${TEST_PROJECT_DIR}" ]; then
  346. ln -s ${BASE_PROJECT_DIR} ${TEST_PROJECT_DIR}
  347. fi
  348. ${BASE_PROJECT_DIR}/shell/set_auth.sh
  349. #${OLD_PROJECT_DIR}/shell/set_auth.sh
  350. }
  351. set_base
  352. if [ -z $1 ]; then
  353. new_test_branch
  354. else
  355. FIRST_PARAM=$1;
  356. if [ "${FIRST_PARAM}" == "nginx" ]; then
  357. #配置nginx
  358. set_nginx
  359. echo "nginx ok"; exit 1;
  360. fi
  361. if [ "${FIRST_PARAM}" == "1" -o "${FIRST_PARAM}" == "base" ]; then
  362. if [ "${FIRST_PARAM}" == "1" ]; then
  363. #为1表示取用当前目录
  364. FIRST_PARAM=${DATE}
  365. fi
  366. fi
  367. #存在文件夹才处理
  368. NEW_PROJECT_DIR=${BRANCH_PROJECT_DIR}${FIRST_PARAM}
  369. if [ -d "${NEW_PROJECT_DIR}" ]; then
  370. if [ -z $2 ]; then
  371. #第二个参数不存在 停留60s 可以关闭
  372. echo -e '正式环境切换确保所有人员知晓【客户】【产品】【运营】【商务】\n停留60s 可以终止执行';
  373. sleep 60;
  374. fi
  375. set_master
  376. echo "${MASTER_PROJECT_DIR} -> ${NEW_PROJECT_DIR} ok"; exit 1;
  377. else
  378. echo "${NEW_PROJECT_DIR} not exits!"; exit 1;
  379. fi
  380. echo "参数输入错误"; exit 1;
  381. fi