python 自动化部署工具-fabri

  • 2020 年 1 月 10 日
  • 笔记

今天闲来无事,来介绍一下利用fabric 来部署代码包。

安装 pip install fabric

fabric 默认引用fafile.py,指定执行文件加参数-f,如:fab -H 127.0.0.1 -f fabtest.py test

生产环境的代码发布需要具备以下几点:打包,发布,切换,回滚,版本管理

# -*- coding: utf-8 -*-    from fabric.api import *  from fabric.state import env  from fapistrano import deploy  from fabric.api import cd  import time  env.user='deploy'  env.host=['192.168.1.10','192.168.1.10']  env.password='testabc123'  env.dev_source_path = '/data/workspace'  env.tar_path='/tmp/release/'  env.pro_project_path='/home/workspace/'  env.version = time.strftime("%Y%m%d")+"v1"    @task  @runs_once  def tar_project():      with lcd(env.dev_source_path):          local('tar -czf {0}release.tar.gz .'.format(env.tar_path))  @task  def put_tar_package():      with cd (env.pro_project_path+'release'):          run('mkdirenv.version')          with settings(warn_only=True):          result = put(env.tar_path+'release.tar.gz' env.pro_project_path+'release'+env.version)         if result.failed and no("put file failed. Continue[Y/N]")                   abort("put tar failed")        with cd( )        run('tar -zxvf release.tar.gz')        run('rm -rf   release.tar.gz')  @task  def make_link():      with settings(warn_only=true):          current_path =env.pro_project_path + 'current'          run('rm -rf  {0}'.format(current_path))          run('ln -s {0} {1}'.foramt(env.pro_project_path+'release'+env.version,current_path))    @task  def main():       tar_project()       put_tar_package()       make_link()