linux系统下部署python自动化程序并配置Jenkins并定时执行

简介: 自动化测试脚本代码部署到服务器上,Jenkins定时执行脚本,发送邮件

问题:

自动化测试脚本代码咱已经有了,那么该如何部署到我们的服务器上,在服务器上定时自动执行呢?

思路:

首先,我们要统一环境,大家知道,python2和python3的语法和库有很多改动,而大多服务器自带的python版本还是2,所以我们要把服务器的环境配置改为和我们本地配置尽量完全相同,避免版本造成的影响;环境配置之后,下一步就是依赖,可以设置成执行代码时自动下载,否则没有依赖也是会执行失败的;如果代码执行成功,就可以进行最后一步,设置定时任务,定时执行脚本,或者通过Jenkins定时部署,达到我们想要的效果。

-- 记录一下过程中遇到的坑

环境配置

Python环境

安装python3的版本,安装方式有很多,可以自行选择,官方文档

准备python的编译环境

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

下载指定版本的python源码

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

安装编译python3

cd Python-3.6.2
mkdir /usr/local/python3.6
./configure --prefix=/usr/local/python3.6
make
make install
# 建立软链接
ln -s /usr/local/python3.6/bin/python3.6  /usr/bin/python3
# 查看新的版本
python3 -V  # 这里是兼容python2的,所以一定要带这个3,如果不带就还是用的python2

更新pip3

# 下载
wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
# 解压
tar -zxvf setuptools-19.6.tar.gz
# 编译、安装
 cd setuptools-19.6/
python3 setup.py build
python3 setup.py install
# 建立软链接
 ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3
 # 更新pip3
 pip3 install --upgrade pip

下载依赖

首先在pycharm项目的控制台中执行以下命令,将我们python环境的依赖生成一个文档,会有一些此项目不需要的依赖,按照情况删除即可

pip freeze>requirements.txt #本地下载所以没用pip3

在这里插入图片描述
将程序打包上传到服务器,在目录下可以看到上面生成的这个文件,执行命令安装依赖

pip3 install -r requirements.txt

遇到问题与解决方案

  1. 我在安装的时候遇到一些依赖版本不对应的情况(xlrd),可能是自带的或者手动下载时没带版本号,导致部分代码执行报错,所以有时候需要卸载和安装指定版本的依赖

    方案:卸载xlrd,安装实际需要的版本,参考xlrd使用问题

    # 卸载
    pip3 uninstall xlrd
    # 安装
    pip3 install xlrd==1.2.0
  2. import导包时找不到自定义模块,参考: python环境import找不到自定义的模块(如果有更好的方案欢迎评论交流)
    方案:修改环境变量 ,所有文件都可以引入/usr/server/下的模块vi /etc/profile

    export PYTHONPATH=$PYTHONPATH:/usr/server/ # 加在后面
    source /etc/profile # 刷新配置

准备完毕,测试一下,执行成功

python3 auto_test.py

在这里插入图片描述

定时执行

程序在服务器上可以正常运行,那么接下来只需要配置到我们的Jenkins上面就可以实现目标啦!

我本来想的是不需要维护用例,就直接创建定时任务每日执行就可以了,但是遇到了另外一个问题没有解决,所以就用Jenkins部署了(Linux自带的cron定时任务,时间是只到分钟的,没有秒!!!执行脚本的时候老是找不到依赖,明明服务器已经装好了,(;′⌒`))对定时任务感兴趣的可以参考:CentOS7安装定时任务

定时任务

还是大概讲一下,定时任务的使用参照上文

*  * * * * echo "this is a crontab" >> /usr/servers/run1.txt
50 15 * * *  pip3 install -r /var/lib/jenkins/workspace/auto_api/requirements.txt >> /usr/servers/run.txt
0 16 * * * /root/training/Python-3.6.5/bin/python3 /usr/servers/auto_api/case/test_login.py >> /usr/servers/python.txt

由于定时任务直接执行脚本会找不到依赖包(服务器有,但是定时任务就不行),所以加了定时任务先下载依赖,目前这个方案没跑通

Jenkins部署

Jenkins安装传送门:linux下jenkins安装及配置

新建一个项目,配置如下,由于是本机的,只需要执行代码就可以了,配置比较简单,可以设置定时运行等

在这里插入图片描述

首次执行依然是找不到依赖包的问题,所以加了下载依赖的步骤,后面再执行就不需要了

在这里插入图片描述

构建成功

在这里插入图片描述

在这里插入图片描述

  • [ ] ps:git项目配置会相对麻烦一些,后面也会操作一下,留下教程,待更新!!!
相关文章
|
1月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
82 1
Linux系统之部署轻量级Markdown文本编辑器
|
1月前
|
搜索推荐 Linux 测试技术
Linux系统之部署homer静态主页
【10月更文挑战第11天】Linux系统之部署homer静态主页
76 41
Linux系统之部署homer静态主页
|
22天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
69 3
Linux系统之部署Linux管理面板1Panel
|
1月前
|
Web App开发 资源调度 网络协议
Linux系统之部署IP工具箱MyIP
【10月更文挑战第5天】使用Docker部署Radicale日历和联系人应用Linux系统之部署IP工具箱MyIP
81 1
Linux系统之部署IP工具箱MyIP
|
1月前
|
Linux Shell 异构计算
在linux上部署yolov5和安装miniconda3
这篇文章介绍了在Linux系统上部署YOLOv5并安装Miniconda3的步骤,包括使用wget命令下载Miniconda安装脚本、安装Miniconda、初始化Conda环境、添加镜像源等。
76 3
在linux上部署yolov5和安装miniconda3
|
19天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
46 2
|
20天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
29 3
|
21天前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
38 2
|
23天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
189 2
|
1月前
|
jenkins Java 持续交付
Jenkins打包,发布,部署
Jenkins打包,发布,部署
199 0