Hi,你的发布脚本是怎么样的?

2015-09-15 08:04:37 +08:00
 banxi1988
我昨天写了个简单的发布脚本。

```bash
#!/bin/bash
git pull
dest_tar='cool_project.tar.gz'
dest_dir='/var/www/'
tar zcf $dest_tar cool_project requirements.txt app.py
echo 'tar done'
cp $dest_tar $dest_dir
(cd $dest_dir;tar zxf $dest_tar )
echo 'untar done'
rm $dest_tar
supervisorctl restart cool_project
```

以前的发布脚本工作主要是由 fabric 完成的。
但是使用 fabric 上传整个项目太慢了。
现在改成在服务器 clone 项目,然后再更新发布,虽然也算有一点改进。
但是我感觉还是很 ugly.

求吐槽,求指点。
5017 次点击
所在节点    Python
23 条回复
ChoateYao
2015-09-15 14:55:49 +08:00
#!/bin/bash
r=''
s=''
path='/data/web/aaa'
d='/data/release/bbbb'
m=''
command='svn log -v'
publish=''
if [[ ! $* ]]
then
echo '输入 bbb-commit -h 来查看帮助'
exit
fi
while getopts ":r:s:Pm:p:hd:l:" opt;
do
case $opt in
r )
r=$OPTARG
;;
s )
s=$OPTARG
;;
P )
publish=true
;;
p )
path=$OPTARG
;;
m )
m=$OPTARG
;;
d )
d=$OPTARG
;;
l )
l=$OPTARG
;;
h )
echo -e " -m 发布时需要的注释\n -p 搜索路径\n -P 发布\n -d 提交版本>库路径\n -s 搜索\n -r 版本或日期参照 svn log -r\n -l 条数"
exit
;;
?)
echo '输入 bbb-commit -h 来查看帮助'
exit
;;
esac
done
if [ $r ]
then
command="${command} -r${r}"
fi
if [[ $s ]]
then
command="${command} --search \"${s}\""
fi
if [ $l ]
then
command="${command} -l${l}"
fi

if [ $publish ]
then
if [[ $m ]]
then
command="${command} ${path} | grep '[AM] ' | awk -v path=${d} '{print path substr (\$2, 1 )}'"
eval "svn ci \`${command}\` -m\"${m}\""
else
echo 'Error Options -m'
fi
else
eval $command ${path}
fi
vivisidea
2015-09-15 22:15:45 +08:00
我们厂自己做了一套自动部署平台, push 代码上去点点就发布完了。。
metrue
2015-09-16 07:24:33 +08:00
capistrano 即可,一键方便快捷。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/220742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX