zoukankan      html  css  js  c++  java
  • 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()
     
  • 相关阅读:
    C#操作配置文件
    IIS的启动与停止命令
    我的SQL里哪个语句占用的CPU最多?
    Redis 安装
    redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
    多线程和异步
    mvc 使用Newtonsoft.Json进行序列化json数据
    深入理解JavaScript Hijacking原理
    C#中的partial class(部分类)
    在ASP.NET MVC中使用DropDownList
  • 原文地址:https://www.cnblogs.com/wangxue1314/p/13448773.html
Copyright © 2011-2022 走看看