赞
踩
作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel 数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈!
背景
实践是检验学习成果的唯一标准!
在我学习过程中,一直琢磨着如何将学习的理论与我所掌握的知识结合起来,来解决或者处理实际问题,于是就有了 前端自动化打包部署 的念头。
尽快近几年,市面上关于自动化部署的工具层出不穷,比如当下比较流行的Jenkins,尽管如此,我还是想自己试一试~
环境配置
初学乍道,切不可眼高手低,先给自己定个小目标,先实现一个最简单版本。
工欲善其事,必先利其器,开发环境的配置是开发的第一步。
关于 python 的安装配置我就不赘述了。
为了方便测试,我本地利用 VM 虚拟机安装了 centos 系统,安装并配置 nginx 充当了服务器。
难点分析
要想实现打包,核心需要考虑下面2个问题:
在 python 脚本中如何去执行前端的打包命令npm run build(这里以vue项目作为测试)
在 python 脚本中如何连接服务器将打包好的问题上传到服务器的指定目录中去
理论求证
通过查阅资料得知,python中的 os 模块提供了非常丰富的方法用来处理文件和目录,其中 os模块中的system()函数可以方便地运行其他程序或者脚本,其语法如下:
os.system(command)
command 要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数,该方法返回结果如果为 0,则表示命令执行成功,其它值则表示错误。
这样就解决了第一个问题。
关于服务器连接这一块,可以使用python的一个第三方模块 paramiko,它实现了SSHv2协议,允许我们直接使用SSH协议对远程服务器执行操作,关于 paramiko 的更多知识和用法,请戳这里
这样上面两个难点就解决了,我们就可以开工了。
小试牛刀
首先定义一个类 SSHConnect 后续的方法我们都会在这个类里面完善
class SSHConnect:
# 定义一个私有变量,用来保存ssh连接通道,初始化为None
__transport = None
复制代码初始构造函数
我们需要在构造函数中定义我们需要的参数,初始化我们的连接
def init(self, hostname, username, password, port=22):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。