前言
Fabric 是一个 Python 库,可以用于简化使用 SSH 的应用程序部署或系统管理任务。
安装
pip install fabric
部署过程
这是一个前端项目部署过程:
- 本地打包静态文件
npm run build
- 压缩生成的静态文件包
zip -r dist.zip dist
- scp 上传文件到服务器
- 远程连接服务器
- 进入项目根目录,解压静态文件压缩包
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)
和看官方文档查看。