自动化部署的shell脚本

xiaoxiao2021-02-27  149

这个shell脚本为线上代码部署的脚本,此脚本适用于小公司。而大公司会有专门的一套自动化部署的程序,比如使用jenkins部署,这个是比较常见的。

#!/bin/bash #首先在code里面执行下面命令 #git checkout git@github.com:<username>/demo.git CDATE=$(date "+%Y-%m-%d") CTIME=$(date "+%Y-%m-%d-%H-%M") #SHELL CODE_DIR="/deploy/code/" CONFIG_DIR="/deploy/config/" TAR_DIR="/deploy/tar/" TMP_DIR="/deploy/tmp/" usage(){ echo $"usage $0 [deploy | rollback-list | rollback-pro version]" } #获取代码,并拷贝到临时目录下 git_pro(){ echo "begin git pull" cd $CODE_DIR && git pull API_VERL=$(git show | grep commit | cut -d" " -f2) #git show 为显示各种类型的对象 API_VER=$(echo ${API_VERL:0:6}) cp -a "$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 && /bin/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" } #将打包好的代码上传到正式环境的tmp目录 scp_pro(){ /bin/cp $TMP_DIR/pro_demo_"$TAR_VER.tar.gz /tmp } #部署 deploy_pro(){ cd /tmp/ && 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 ok' } #回滚,列出所有打包好的代码 rollback_list(){ ls -l /tmp/*.tar.gz } #删除软连接,重新建立软连接 rollback_pro(){ rm -f /var/www/html/demo ln -s /tmp/$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
转载请注明原文地址: https://www.6miu.com/read-15379.html

最新回复(0)