python 实现自动部署测试环境

预设条件
产品运行在Linux CentOS6 X64上
python3,Djanggo,Cherrypy安装好

手动安装过程
登录服务器
检查是否有以前的版本的产品在运行,有,停掉
如果有原来的代码包删除掉
上传安装包文件(手工winscp)
备份原来的产品安装目录
解压安装包文件
运行run.sh,启动服务
浏览器登录页面校验服务是否启动

import paramiko
import sys

#创建SSHClient,实例对象
ssh = paramiko.SSHClient()

#信任远程机器,允许访问
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接远程机器  地址、端口、用户名、密码
ssh.connect(("192.168.160.234",
             22,
             "root",
             "magic"))

def remoteRun(cmd,printOutput=True):
    stdin, stdout, stderr = ssh.exec_command(cmd)
    output = stdout.read().decode('utf8')
    errinfo = stderr.read().decode()
    if printOutput:
        print(output+errinfo)
    return output + errinfo

#查看老版本是否运行
stdin, stdout, stderr = ssh.exec_command(
    'ps -ef|grep apiteach|grep -v grep')

# 打印返回值
output = stdout.read().decode()
print(output)

if 'python3 project/cherrypy_startup.py apitesch' in output:
    print("老版本存在,杀死老版本")

    parts=output.split(' ')
    #去除掉空字符串
    parts=[part for part in parts if part]
    pid=parts[1]
    ssh.exec_command(f'kill -9 {pid}')

    #删除文件
    ssh.exec_command('rm -f restapi-teach.zip')

    #上传文件
    sftp=ssh.open_sftp()
    #左边本地文件,右边上传位置
    sftp.put(r'f:	emp
estapi-teach.zip','/home/stt5/restapi-teach.zip')
    sftp.close()

    print('备份原来的安装目录')
    remoteRun('rm -rf restapi-teach.bak;mv restapi-teach restapi-teach.bak')

    print('解压安装包')
    remoteRun('unzip restapi-teach.zip',printOutput=False)

    print('运行')
    remoteRun('cd restapi-teach;chmod +x run.sh;dos2unix run.sh;'
              './run.sh;sleep 5')

    print('检查版本是否运行成功')
    output=remoteRun('ps -ef|grep apiteach|grep -v grep')

    #如果存在,运行成功
    if 'python3 project/cherrypy_startup.py apitesch' in output:
        print("新版本运行成功")
    else:
        print("新版本运行失败")
        sys.exit(3)

from selenium import webdriver

driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(f'http://127.0.0.1:8066/mgr/login/login.html')

driver.find_element_by_id('username').send_keys('auto')
driver.find_element_by_id('password').send_keys('auto')
driver.find_element_by_tag_name('button').click()
 
原文地址:https://www.cnblogs.com/wangxue1314/p/13448773.html