需要安装paramiko
pip install paramiko
定义字典进行前端多环境的打包压缩连接服务器部署
buildDisct = {
"cmdList": ["npm run build", "npm run build:test"],# 前端多环境打包命令
"zipFileName": ["dist", "dist2"],# 生成的打包路径进行文件压缩
"ssh": [
{"host": 'xx.xx.xx.xxx',#服务器ip
"port": 22,# 端口号
"user": 'root', # 账号
"private_key_path": 'E:\XXXX',# 本地的密钥路径
"remote_directory": './nginx/html/web2',# 上传服务器路径
"local_zip_path": r'E:\xx\dist\dist.zip',# 上传本地路径前端打包的zip
"out_dir": 'dist'# 上传服务器指定的文件
},
{"host": 'xx.xx.xx.xxx',#服务器ip
"port": 22,# 端口号
"user": 'root', # 账号
"private_key_path": 'E:\XXXX',# 本地的密钥路径
"remote_directory": './nginx/html/web2',# 上传服务器路径
"local_zip_path": r'E:\xx\dist2\dist2.zip',# 上传本地路径前端打包的zip
"out_dir": 'dist'# 上传服务器指定的文件
},
]
}
获取用户输入,直到输入正确才执行,输入错误就继续让输入(让用户指定全部打包还是正式服或者是测试服打包)
while True:
# 获取用户输入
choice = input("Select build mode (all/formal/test): ")
# 验证用户输入是否有效
if choice in valid_modes:
# 输入正确,跳出循环
break
else:
print("Please enter a valid build mode")
循环执行对应的打包部署命令
def perform_build_and_zip(cmd, out_dir, i):
project = BuildProject()
print(cmd)
project.build(cmd)
# 压缩成zip包
zipFileModule.zip_directory_contents(out_dir, f'{out_dir}.zip')
sshModule.upload_file(buildDisct["ssh"][i])
if choice == 'all':
for i, cmd in enumerate(buildDisct['cmdList']):
perform_build_and_zip(cmd, buildDisct["zipFileName"][i], i)
elif choice == 'formal':
perform_build_and_zip(
buildDisct['cmdList'][0], buildDisct["zipFileName"][0], 0)
elif choice == 'test':
perform_build_and_zip(
buildDisct['cmdList'][1], buildDisct["zipFileName"][1], 1)
gtiee地址:gitee.com/lihuikun1/w…