用Fabric优雅的发代码

程序员部署发布代码的时候多了,一点会觉得麻烦。开发环境、测试环境、生产环境。需要用个工具来帮我做这件事,不然每次更新发布代码,还得登录服务器执行命令,实在繁琐。目前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: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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值