此项目目的在于将脚本类文件自动打包成RPM,便于线上环境管理。打包过程如下:
- 输入项目名称和tag号
- clone gitlab上的项目代码到本地
/tmp/
下的一个临时目录 - 如果项目中有
build
脚本,运行build脚本做预处理,比如css,js压缩等 - 本地将项目打成tar包,scp到打包服务器上
- 执行打包操作,生成RPM包,并将RPM包scp到线上YUM仓库
- python2.7 (py依赖包见requirements.txt)
- java
- CentOS5
- CentOS6
- FTP
- 安装Python包管理工具pip
- git clone Deploys 代码
- 运行
pip install -r requirements.txt
根据RPM包的安装目标机操作系统版本,分别在相应的打包环境打包
- centos5 172.18.100.208
- centos6 172.18.100.214
RPM Build的目录在/home/buider/
。
-
打包时需要tag信息, tag名称可以时v1.2.3 或者 projectname-1.2.3 第一位数字为 版本号 其后为release, minor
-
RPM post小节里面涉及的脚本,不可以带有
yum
相关指令, 以及需要输入的指令,否则,会导致死锁
参考settings.projects文件中的mop/gift项目配置
- fab help 更加详细的帮助信息
- 列出所有的项目
fab list
- 打成RPM包
fab build_rpm:mop/gift,gift-1.4.1
- 升级RPM包
fab upgrade:mop/gift,[code|static],[prod|stage]
- 初始化YUM环境
fab -H 172.18.100.76,172.18.100.77 init_env
如果需要安装python:fab -H 172.18.100.76,172.18.100.77 init_env:py
使用fab 命令的时候可以使用 --hide stdout
隐藏stdout输出
# Bash completion for fabric
#
function _fab_complete() {
local cur
if [[ -f "fabfile.py" || -d "fabfile" ]]; then
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "$(fab -F short -l)" -- ${cur}) )
return 0
else
# no fabfile.py found. Don't do anything.
return 1
fi
}
complete -o nospace -F _fab_complete fab
- store configs in db
- separate deploying from deploys
- 更新配置文件的配置方式,貌似现在的配置文件有点让人崩溃
- 更多的错误处理
- TBD: 把relay上的release_scripts下相关的脚本,整合进来