【Python实战篇】用python写一个自动化部署工具

本文介绍了如何使用Python编写一个exe程序,实现SpringBoot项目的自动化部署,包括输入验证、连接Linux服务器、部署流程和打包过程,以及所需依赖的Python库和加密技术的应用。
摘要由CSDN通过智能技术生成

效果

1688121596787.png

起因

现在springboot项目的自动化部署已经非常普遍,有用Jenkins的,有用git钩子函数的,有用docker的…等等。这段时间在玩python,想着用python实现自动化部署,即能锻炼下编码能力,又方便运维。于是开始着手写了一个exe程序,可直接在任何windows电脑上运行(不具备python环境的windows电脑也可以运行)。有兴趣的小伙伴可以跟着代码一起练一练噢,写的详细一点,对python新手也很友好。

下方自取(安全链接)
最新全套【Python入门到进阶资料 & 实战源码 &安装工具】

实现步骤

开发准备

  1. 具有python基本环境和ide的windows或macOS电脑一台
  2. 安装打包工具pip install pyinstaller
  3. 一点小小的python基础

步骤

1. 导入依赖

image.png 新建一个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. 输入校验

部署毕竟是件严谨的事情,我们增加个部署密钥校验,我的这个部署密钥承担了以下的功能

  1. 确保部署的安全性,不是谁拿到这个exe程序都能运行的(哼~傲娇)
  2. 密钥字符串用-分割开,前面的区分环境,后面的区分项目或模块。
  3. 如果同学们不需要区分项目子模块,就不需要搞这么复杂,随便定义一个密钥就好了
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,也定义了一些基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值