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

2023-10-30

问题:

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

思路:

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

插播一条广告

学习人的福音!你只管学习,我们提供学习工具和奖励,最高可得全额返现!

CSDN结合学习会员推出专属“勤学会”,内含多种权益,帮助大家更好的学习成长。

  1. 强大助学团帮你技术、职业道路上“有问必答”;
  2. 各技术领域1200+本电子书免费阅读学习、总价值15w+;
    3.专属学习模式——赢取CSDN周边、最高全额返现等丰富的学习奖励。https://vip.csdn.net/askvip?share_user1=IceKing12138

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

环境配置

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安装及配置

本地代码发布

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

在这里插入图片描述

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

在这里插入图片描述

构建成功

在这里插入图片描述

在这里插入图片描述

gitlab拉取代码发布

研究了一下,可能需求比较简单,使用git拉取代码发布配置也没有多加什么东西(自己创建了一个git项目测试)
在这里插入图片描述
填入git地址后需要登陆授权,其他配置和上面的操作一样,拉取代码成功,运行成功
在这里插入图片描述
在这里插入图片描述
如果运行过程中遇到其他问题和bug,欢迎评论交流!!

- [ ] ps:git项目配置会相对麻烦一些,后面也会操作一下,留下教程,待更新!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • 切片稀疏(scipy)矩阵

    我将不胜感激任何帮助 以理解从 scipy sparse 包中切片 lil matrix A 时的以下行为 实际上 我想根据行和列的任意索引列表提取子矩阵 当我使用这两行代码时 x1 A list 1 x2 x1 list 2 一切都很好
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • Pandas style.bar 颜色基于条件?

    如何渲染其中一列的 Pandas dfstyle bar color属性是根据某些条件计算的 Example df style bar subset before after color ff781c vmin 0 0 vmax 1 0 而
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • Dubbo与Zookeeper伪集群部署

    1 美图 官网 http dubbo apache org docs user preface background md lang zh cn 1 准备Zookeeper zookeeper伪集群模式 2 dubbo安装 git clon
  • Sui安全篇|详解零知识证明 (ZKP) Groth16的可塑性

    Sui Move允许用户使用Groth16进行高效验证任何非确定性多项式时间 Non deterministic Polynomial time NP 状态 Groth16是一种高效且广泛使用的零知识简洁非交互知识证明 Zero Knowl
  • GDB 调试指南

    00 介绍 GDB GNU Debugger 是 UNIX 及 UNIX like 下的强大调试工具 可以调试 ada c c asm minimal d fortran objective c go java pascal 等语言 这一份
  • envi查看影像中指定像素的经纬度

    目的是查看影像上某个像素点对应的经纬度信息 操作步骤 1 打开envi软件 把影像拖入进去 如下图 2 按快捷键ctrl i或者Display gt Cursor Value调出Cursor Value对话框 如下图 3 在最上面工具栏 齿
  • 有用的框架

    选择图片和拍照 implementation com github LuckSiege PictureSelector picture library v2 5 8 可能需要这个 compileOptions sourceCompatibi
  • 【JVM】最全笔记(黑马+尚硅谷+张龙整合笔记)

    本身整合了如下视频的笔记 并进行了整理 尚硅谷周阳 张龙 黑马程序员 黑马ppt非常好 https download csdn net download hancoder 12834607 本文及JVM系列笔记地址 https blog c
  • TestMe

    测试MD文件 TestMe TestMe 链接 link 链接 link 1 target testme
  • 常见前端浏览器兼容问题及解决方案

    常见前端浏览器兼容问题及解决方案 所谓的浏览器兼容性问题 是指因为不同的浏览器对同一段代码有不同的解析 造成页面显示效果不统一的情况 在大多数情况下 我们的需求是 无论用户用什么浏览器来查看我们的网站或者登陆我们的系统 都应该是统一的显示效
  • gensim实战01——word2vec

    介绍 搜狗语料库 http www sogou com labs resource list yuliao php 是可以免费获取的比较大的中文新闻语料库 可是最新的也就是更新到2012年的语料 后续并无放出更新的语料 除了搜狗语料 要获取
  • SpringMVC5.x从入门到精通_完整版

    什么是SpringMVC 一 SpringMVC的概述 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 即使用了MVC架构模式的思想 将web层进行职责解耦 基于请求驱动指的就是
  • 使用python的socket进行多个文件传输

    使用python的socket进行多个文件传输 在网上学习到了基本的socket使用 但与自己想要的效果不同 所以进行了修改实现了在局域网内进行多文件传输 但是还有一些小bug不知道为什么有时候进行传输时 会显示您的主机中的软件中止了一个已
  • 从零搭建若依环境(分离版)

    1 起步 1 1 准备工作 JDK gt 1 8 推荐1 8版本 Mysql gt 5 5 0 推荐5 7版本 Redis gt 3 0 Maven gt 3 0 Node gt 10 1 2 下载若依 使用git克隆 命令为 git cl
  • Markdown语法之数学公式【总结】

    目录 数学运算符号 长空格 分数 角标 上下划线 无穷大 求和符号 累乘符号 余积符号 集合运算 上下位符号 圆括号 省略号 应用 根号 对数 积分 逻辑符号 箭头 三角函数 给公式编号 其他省略号 行列式 矩阵 向量 花括号 上下花括号
  • Linux - 快速进入目录的方法

    Linux 快速进入目录的方法 目录 cd命令技巧 其他常用方法 长目录 回到顶部 cd命令技巧 直接进入用户的home目录 cd 进入上一个目录 cd 进入当前目录的上一层目录 cd 进入当前目录的上两层目录 cd 回到顶部 其他常用方法
  • 汇编语言数据处理长度(X ptr指令解析)

    文章目录 1 通过寄存器名指明要处理的数据的尺寸 2 在没有寄存器名存在的情况下 用操作符 X ptr 指明内存单元的长度 X在汇编指令中可以为byte word或dword 3 其他方法 8086CPU的指令 可以处理两种尺寸的数据 by
  • 有序性保障:X86 CPU内存屏障和JSR内存屏障

    一 X86 CPU内存屏障 sfence 在sfence指令前的写操作当必须在sfence指令后的写操作前完成lfence 在Ifence指令前的读操作当必须在Ifence指令后的读操作前完成mfence 在mfence指令前的读写操作当必
  • 密钥繁多难记难管理?认识高效密钥管理体系

    密钥设置是否只要够安全就能够重复使用 定期修改密钥到底有没有必要 密钥不幸遗失该如何恢复 素未谋面的双方 如何才能安全地进行密钥协商 上一论我们了解到 基于密码学的隐私保护方案 其有效性很大程度上取决于能否有效管理好密钥 这里 我们将进一步
  • Oracle创建临时表

    Oracle临时表 临时表是一种特殊的表 当需要对某一 也可以是多个 表中的一批数据进行反复的操作时 通过为这批数据创建一个临时表 可能会简化操作并且有可能提高效率 语法 CREATE GLOBAL TEMPORARY TABLE 临时表空
  • 【C语言】——调试技巧

    目录 编辑 前言 1 什么是Bug 2 什么是调试 2 1调试的基本步骤 2 2Release与Debug 3 常用快捷键 4 如何写出好的代码 4 1常见的coding技巧 assert const const修饰指针 前言 调试是每个程
  • linux系统下部署python自动化程序并配置Jenkins定时执行

    问题 自动化测试脚本代码咱已经有了 项目地址Python接口自动化框架 那么该如何部署到我们的服务器上 在服务器上定时自动执行呢 思路 首先 我们要统一环境 大家知道 python2和python3的语法和库有很多改动 而大多服务器自带的p