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:\temp\restapi-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()
python 实现自动部署测试环境的更多相关文章
- 记录使用gogs,drone搭建自动部署测试环境
使用gogs,drone,docker搭建自动部署测试环境 Gogs是一个使用go语言开发的自助git服务,支持所有平台 Docker是使用go开发的开源容器引擎 Drone是一个基于容器技术的持续集 ...
- jenkins自动部署测试环境
构建脚本如下: echo "当前目录":$(pwd)echo "当前时间":$(date +%Y-%m-%d_%H:%M)find ./ -type f -na ...
- redis cluster安装部署(测试环境)
redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...
- jenkins+php+svn快速部署测试环境开发环境快速部署
jenkins 虽然作为java常用的打包部署工具,不过也可以使用在phpweb项目部署管理,前段时间帮公司部署了开发环境与测试环境,简单分享一下. 1.内网web环境搭建lnmp,centos下编译 ...
- Python Unittest - 根据不同测试环境跳过用例详解
本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 一.Unittest跳过用例 @unittest.skip( ...
- Python Unittest根据不同测试环境跳过用例详解
虽然现在用的Katalon,不过这篇Unittest基本的用法讲的还是不错的 转自:https://mp.weixin.qq.com/s/ZcrjOrJ1m-hAj3gXK9TjzQ 本文章会讲述以下 ...
- Tomcat环境配置部署测试环境及架构
Tomcat环境配置已经在前面介绍过了,这边就为童鞋们介绍下对于Tomcat的架构是怎么样的! Tomcat的架构包含(bin.conf.lib.logs.temp.wenapps.work)等文件夹 ...
- 测试人员如何使用Git部署测试环境
Git是分布式的版本控制系统. 作为一名Git的小白使用者,一开始接触很懵逼,因为总担心自己一不小心误操作影响代码仓库的代码,网络上关于Git的使用多从开发的角度,很少有人从测试的角度来介绍Git的使 ...
- 吴裕雄--天生自然python学习笔记:python实现自动网页测试
Python 可实现的网页测试的功能十分强大,甚至能通 过编程来实现让绝大多数的测试过程自动化. 这对很多开 发者来说,绝对是不可多得的神器. hash lib 纽件可以判别文件是否有过更改,只需要用 ...
随机推荐
- Spring Cloud05: Zuul 服务网关
一.什么是Zuul 服务网关 Zuul 是 Netflix 提供的⼀个开源的 API ⽹关服务器,是客户端和⽹站后端所有请求的中间层,对外开放 ⼀个 API,将所有请求导⼊统⼀的⼊⼝,屏蔽了服务端的具 ...
- frp实现NAS外网访问
开始 入手了NAS之后就看是漫漫的折腾内网穿透的不归路.用的最多最简单的是下面三种 QC:群晖自带的,速度在100kb左右,能不能连上有时候都是运气,极其不稳定. DDNS:最推荐的方式.上下行都取决 ...
- sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】
数据库优化中的一个实例,记录一下: 1. 原来用了CTE公用表达式的递归,reads高达约40万,看查询执行计划,使用了Nested Loops: 2. 优化去掉递归,改用其它方式实现,reads降低 ...
- Webflux请求处理流程
spring mvc处理流程 在了解SpringMvc的请求流程源码之后,理解WebFlux就容易的多,毕竟WebFlux处理流程是模仿Servlet另起炉灶的. 下面是spring mvc的请求处理 ...
- 题解 P6622 [省选联考 2020 A/B 卷] 信号传递
洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...
- noip模拟6[辣鸡·模板·大佬·宝藏]
这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...
- matplotlib 并列条形图
1 绘制并列条形图,并在条形图上加标注 1.1 代码 from matplotlib import pyplot from matplotlib import font_manager import ...
- CosId 通用、灵活、高性能的分布式 ID 生成器
CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...
- Vue实现点击复制文本内容(原生JS实现)
需求: 实现点击订单编号复制内容 实现步骤: 这里我是在element 的table组件里实现的步骤,仅供参考,实际上实现思路都大同小异 首先在需要点击的地方,添加点击事件 <div class ...
- (C++)戳西瓜
写在前面的话: 请不要吝啬你的点赞!!! 题目描述 有 n 个西瓜,编号为0 到 n-1,每个西瓜上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的西瓜.每当你戳破一个西瓜 i ...