用Fabric优雅的发代码

xiaoxiao2021-02-28  117

程序员部署发布代码的时候多了,一点会觉得麻烦。开发环境、测试环境、生产环境。需要用个工具来帮我做这件事,不然每次更新发布代码,还得登录服务器执行命令,实在繁琐。目前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 使用 新建一个fabfile.py文件 # -*-coding:utf-8 -*- # fab deploy:dev import sys from fabric.api import run, env, cd, sudo # 使用ssh_config,也可以使用账户密码 env.use_ssh_config = True deploy_env = sys.argv[-1].split(':')[-1].upper() # 验证deploy_env assert deploy_env in ['DEV', 'RELEASE'] # 设置连接的hosts env.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/

转载请注明原文地址: https://www.6miu.com/read-49414.html

最新回复(0)