hongblue 发表于 2018-1-12 14:33:46

git持续集成自动化部

# cat prod-deploy.sh  
#
!/bin/bash  

  
#Date
/Time  
CDATE
=$(date "+%Y-%m-%d")  
CTIME
=$(date "+%Y-%m-%d_%H-%M")  

  
#Shell
  
CODE_DIR
="/deploy/code/demo"  
CONFIG_DIR
="/deploy/config"  
TMP_DIR
="/deploy/tmp"  
TAR_DIR
="/deploy/tar"  

  
usage(){
  
echo $
"Usage: $0 "  
}
  

  

  
#获取代码
  
git_pro(){
  
echo
"begin git pull"  
cd ${CODE_DIR}
&& git pull  
API_VERL
=$(git show|grep commit|cut -d ' ' -f2)  
API_VER
=$(echo ${API_VERL:0:6})  
cp
-r "${CODE_DIR}" "${TMP_DIR}"  

  
}
  
#配置文件
  
config_pro(){
  
echo
"add pro config"  
/bin/cp "${CONFIG_DIR}"/*"${TMP_DIR}"/demo/
  
TAR_VER="${API_VER}"_"$CTIME"
  
cd ${TMP_DIR} && mv demo pro_demo_"${TAR_VER}"
  
}
  
#打包
  
tar_pro(){
  
echo "tar pro"
  
cd ${TMP_DIR} && tar czf pro_demo_"${TAR_VER}".tar.gz pro_demo_"${TAR_VER}"
  
echo "tar end pro_demo_"${TAR_VER}".tar.gz"
  

  
}
  
#拷贝到对应服务器对应目录
  
scp_pro(){
  
#模拟远程scp
  
echo "begin copy"
  
/bin/cp ${TMP_DIR}/pro_demo_"${TAR_VER}".tar.gz /tmp/testgit
  
}
  

  

  
#部署节点
  
deploy_pro(){
  
echo "begin deploy"
  
cd /tmp/testgit && tar zxf pro_demo_"${TAR_VER}".tar.gz
  
rm -f /var/www/html/demo
  
ln -s /tmp/pro_demo_"${TAR_VER}" /var/www/html/demo
  

  

  
}
  
#测试
  
test_pro(){
  
echo "test begin"
  
echo "test ok"
  
}
  

  
rollback_list(){
  
ls -l /tmp/testgit/*.tar.gz
  

  
}
  

  
rollback_pro(){
  
rm -f /var/www/html/demo
  
ln -s /tmp/testgit/$1 /var/www/html/demo
  
}
  

  
main(){
  
case $1 in
  
deploy)
  
git_pro;
  
config_pro;
  
tar_pro;
  
scp_pro;
  
deploy_pro;
  
test_pro;
  
;;
  
rollback-list)
  
rollback_list;
  
;;
  
rollback-pro)
  
rollback_pro $2
  
;;
  
*)
  
usage;
  
esac
  
}
  

  
main $1 $2
页: [1]
查看完整版本: git持续集成自动化部