Fabric自动部署

前言

Fabric 是一个 Python 库,可以用于简化使用 SSH 的应用程序部署或系统管理任务。

安装

pip install fabric

部署过程

这是一个前端项目部署过程:

  1. 本地打包静态文件 npm run build
  2. 压缩生成的静态文件包 zip -r dist.zip dist
  3. scp 上传文件到服务器
  4. 远程连接服务器
  5. 进入项目根目录,解压静态文件压缩包 unzip -o dist.zip

其实这是一个非常单调重复的部署过程,虽然容易,但每次也会花费好几分钟甚至10分钟时间。

编写 Fabric 脚本

'''
project/deploy.py
'''

import subprocess
from fabric import Connection

def main():
    subprocess.run("npm run build:prod", shell=True)
    subprocess.run("zip -r dist.zip dist", shell=True)
    c = Connection("root@192.168.14.211", connect_kwargs={"password": "password"})

    with c.cd('/root/getui-coffee-saas'):
        c.put('dist.zip', '/root/getui-coffee-saas')
        c.run("unzip -o dist.zip")

if __name__ == '__main__':
    main()

运行 Fabric 脚本

python deploy.py

该脚本即可将上面的前端项目部署过程自动化,对于 web 后端项目自动化部署也是类似的。

Fabric 应用接口

操作

旧版本中 Fabric 提供的接口都放在 fabric.api 中维护,我现在使用的 2.5.0 版本可以直接在 Connection 对象实例上调用接口。如上面示例代码中上传文件的代码 c.put('dist.zip', '/root/getui-coffee-saas')

具体的接口可通过 dir(c) 和看官方文档查看。

留下评论