用Fabric优雅的发代码

来源:互联网 发布:悉尼大学 住宿 知乎 编辑:程序博客网 时间:2024/05/15 01:52
程序员部署发布代码的时候多了,一点会觉得麻烦。开发环境、测试环境、生产环境。需要用个工具来帮我做这件事,不然每次更新发布代码,还得登录服务器执行命令,实在繁琐。目前python有两种比较主流的工具,一个是fabric([http://www.fabfile.org/](http://www.fabfile.org/)),还有一个是ansible(fabric简单易用,ansible专业)。

1.安装:

pip install fabric

博主用的mac,使用fabric使用碰到两个错,一起贴出来。依赖cryptography,执行

pip install cryptography --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include"

ImportError: No module named nacl.signing

pip install pynacl
  1. 使用
    新建一个fabfile.py文件
# -*-coding:utf-8 -*-# fab deploy:devimport sysfrom fabric.api import run, env, cd, sudo# 使用ssh_config,也可以使用账户密码env.use_ssh_config = Truedeploy_env = sys.argv[-1].split(':')[-1].upper()# 验证deploy_envassert deploy_env in ['DEV', 'RELEASE']# 设置连接的hostsenv.hosts = [deploy_env]# 发布代码def deploy(host):    host = host.upper()    # 非测试环境,需要用户手动输入Y(严谨一点!!!)    if host != 'DEV' and raw_input('Are you sure? Y/y: ').upper() != 'Y':        sys.exit(1)    # 进入项目,使用git拉最新代码    with cd('/home/deploy/projects'):        run('git checkout .')        run('git pull')    # 重启supervisord    if host != 'DEV':        sudo("supervisorctl restart project")    else:        run("supervisorctl restart project")

发布代码
fab deploy:dev 发布测试环境
fab deploy:relase 发布正式环境

贴一些资料方便大家学习:
http://wklken.me/posts/2013/03/25/python-tool-fabric.html
http://www.fabfile.org/
http://liyangliang.me/posts/2015/03/deploy-applications-using-fabric/

原创粉丝点击