效果
起因
现在springboot项目的自动化部署已经非常普遍,有用Jenkins的,有用git钩子函数的,有用docker的…等等。这段时间在玩python,想着用python实现自动化部署,即能锻炼下编码能力,又方便运维。于是开始着手写了一个exe程序,可直接在任何windows电脑上运行(不具备python环境的windows电脑也可以运行)。有兴趣的小伙伴可以跟着代码一起练一练噢,写的详细一点,对python新手也很友好。
下方自取(安全链接)
最新全套【Python入门到进阶资料 & 实战源码 &安装工具】
实现步骤
开发准备
- 具有python基本环境和ide的windows或macOS电脑一台
- 安装打包工具
pip install pyinstaller
- 一点小小的python基础
步骤
1. 导入依赖
新建一个py文件,可以把它命名为 deployment.py(名字随意哈,什么名儿都可以),然后把下面的库导入语句copy到此py文件中
import os #用于-提取文件名
import re #用于-正则表达式
import time #用于-线程休眠
import paramiko #用于-远程执行linux命令
from alive_progress import alive_bar #用于-进度条工具类
from cryptography.fernet import Fernet #用于-加解密代码
import base64 #用于-加解密代码
import hashlib #用于-加解密代码
在导入依赖的时候,可能有些依赖咱们的电脑上之前没下载过,不要紧,只需要在pycharm中按 alt+enter就可以自动导入了,PyCharm跟Idea的快捷键一模一样,可以按Idea的习惯使用。而且在python中还不用配置maven或pom文件,非常方便。
2. 输入校验
部署毕竟是件严谨的事情,我们增加个部署密钥校验,我的这个部署密钥承担了以下的功能
- 确保部署的安全性,不是谁拿到这个exe程序都能运行的(哼~傲娇)
- 密钥字符串用-分割开,前面的区分环境,后面的区分项目或模块。
- 如果同学们不需要区分项目子模块,就不需要搞这么复杂,随便定义一个密钥就好了
import os #用于-提取文件名
import re #用于-正则表达式
import time #用于-线程休眠
import paramiko #用于-远程执行linux命令
from alive_progress import alive_bar #用于-进度条工具类
from cryptography.fernet import Fernet #用于-加解密代码
import base64 #用于-加解密代码
import hashlib #用于-加解密代码
#检查密钥格式
def check_deploy_sign(deploy_site):
#确保密钥只能是以下4个之一才能继续往下操作,否则无限循环输入 或 退出程序
if deploy_site != 'pro-main' and deploy_site != 'pro-manage' and deploy_site != 'test-main' and deploy_site != 'test-manage':
#校验失败,一直校验
new_deploy_site = input("错误:请填写部署密钥:")
check_deploy_sign(new_deploy_site)
#校验成功,退出
return deploy_site
try:
deploy_sign = input("提示:请填写部署密钥:")
deploy_sign = check_deploy_sign(deploy_sign)
# 部署环境 pro代表生成环境,test代表测试环境
deploy_server = deploy_sign.split('-')[0]
# 部署模块或项目 manage代表manage模块,main代表main模块,
deploy_site = deploy_sign.split('-')[1]
# 打包时的包名,三目运算符
package_name = 'production' if deploy_server == 'pro' else 'staging'
except Exception as e:
print(f"异常: {str(e)}")
上面的代码中 增加了全局的异常处理,类似Java的try catch,也定义了一些基