当前位置: 首页 > news >正文

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker

2.创建 jenkins 容器

3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)

4.运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目

5.执行完成之后删除容器

环境准备
  1. Linux 服务器一台(我的是 CentOS7)
    1、有云服务器的同学直接用云服务器
    2、没有云服务器的同学参考我的博客自己动手安装虚拟机吧
    VMware 安装 Centos7 步骤图解(http://testingpai.com/article/1629981536584)

  2. 在服务器上正确安装 docker
    1、拉取 jenkins 镜像
    jenkins/jenkins:alpine
    2、拉取 python3 镜像
    docker pull python:3-alpine

图片

创建 jenkins 容器
  1. 命令
    docker run -dit --name=jenkins_save01 -p 9999:8080 -u=root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:alpine

  2. 参数说明
    -i:表示运行容器
    -t:表示容器启动后会进入其命令行
    -d:守护式方式创建容器在后台运行
    --name:容器名称
    -p 9999:8080:端口映射,宿主机端口:jenkins 容器端口
    -u=root:指定容器用户为 root 用户
    -v /var/run/docker.sock:/var/run/docker.sock:将 docker.sock 映射到 jenkins 容器中
    docker.sock 文件是 docker client 与 docker daemon 通讯的文件
    -v /usr/bin/docker:/usr/bin/docker:将宿主机 docker 客户端映射到 jenkins 容器中

  3. 运行效果
    1、看到返回容器 ID 表示 jenkins 容器创建成功

    图片

图片

配置 jenkins 容器
  1. 浏览器访问 http://192.168.1.66:9999,来到 jenkins 解锁页面
    1、http://192.168.1.66 为 Linux 服务器 IP 地址
    2、9999 为宿主机映射端口

    图片

  2. 在 Linux 服务器执行命令获取管理员密码
    1、执行命令:docker logs jenkins_save01

    图片

  3. 复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概 1 分钟左右,耐心等待)

    图片

  4. 取消默认插件勾选,进入下一步

    图片

  5. 设置管理员用户名和密码(以后就用这个账号密码登陆你的 jenkins)

    图片

  6. 配置实例

    图片

  7. jenkins 初始化完成看到如下界面

    图片

图片

jenkins 安装插件
  1. 点上一步骤开始使用 jenkins,来到如下界面

    图片

  2. 点 Manage Jenkins 来到如下页面

    图片

  3. 点 Manage Plugins 安装插件
    1、Git 插件安装

    图片

    2、Docker 插件安装

    图片

    3、HTML Publisher 插件安装
     

    图片

    4、安装完成后重启 jenkins 容器

    docker restart jenkins_save01

图片

创建 jenkins 任务
  1. 重新登陆 jenkins,点 New Item

    图片

  2. 创建自由风格的项目

    图片

图片

配置 jenkins 任务
  1. 配置构建记录保留规则

    图片

  2. Git 仓库配置

    图片

    图片


     

    图片


     

    图片

  3. 配置构建后操作
    1、添加构建后操作模块

    图片

     2、配置运行脚本

图片


3、配置 jenkins 中展示的测试报告路径

图片


 

图片



 

图片

  4、保存项目所有配置

图片

六、构建有项目执行环境的 python 镜像

  1. 将项目依赖包导出来到 requirements.txt 文件中,txt 文件名称可以随意写
    pip freeze > requirements.txt

  2. 在宿主机(安装 docker 的机子)上新建一个目录(我的目录在/app),将 requirements.txt 文件复制进去

  3. 在 app 目录下创建 Dockerfile 文件(文件名必须是 Dockerfile,没有后缀)

  4. requirements.txt 文件内容如下

    unittestreport==1.3.2openpyxl==3.0.7ddt==1.4.2pytest==6.2.2selenium==3.141.0pymysql==1.0.2faker==8.1.0jsonpath==0.82BeautifulReport==0.1.3rsa==4.7.2pytest-html==3.1.1allure-pytest==2.9.43requests-toolbelt==0.9.1
  5. Dockerfile 内容以及解释如下

    python:3-alpine #基于python:3-alpine这个基础镜像镜像构建镜像WORKDIR /app #切换工作空间目录ADD ./requirements.txt /app #将python项目依赖包文件添加到镜像RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包CMD ["python3", "main.py"] #设置容器执行后自动执行的命令,这里main.py是我们自动化框架的执行入口文件

     5、在 app 目录下执行镜像构建命令

          docker build -t python3.9:haili .
         -t:镜像名称
         点(.):点表示 Dockerfile 文件所在的目录,我现在在 app 目录下,点表示当前目录

    6.构建成功后会看到一个新的镜像(docker images)

图片

图片

完成 build.sh
  1. build.sh 内容如下

    echo "运行容器python执行自动化" #输出日志#-w=$WORKSPACE:指定workspace#--volumes-from=jenkins_save01:将jenkins容器中的workspace映射到python容器中,此时jenkins中git拉下来的代码就会被映射进去docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:hailiecho "python执行自动化执行成功"
  2. 将 build.sh 复制到你的项目根目录下

  3. 提交代码到 Git 仓库
    Git add .
    Git commit -am'update'
    Git push

图片

去构建 jenkins 任务
  1. 回到 jenkins 首页,找到项目点构建

    图片

  2. 查看构建过程

    图片

  3. 点构建记录

    图片

  4. 查看构建过程(python 自动化项目的输出日志也在这里可以看到)

    图片

  5. 构建过程如下图

    图片

  6. 查看测试报告

    图片

  7. 此时的测试报告会没有样式,因为被 Jenkins 禁用了 CSS 样式,需要我们手动解决

    图片

图片

解决测试报告没有样式的问题

图片

图片

把这个代码放进去执行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

图片

执行成功返回是空,说明没问题

图片

图片

重新构建可以看到有样式的测试报告

图片

相关文章:

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker 2.创建 jenkins 容器 3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 4.运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目 5.执行完成之后删除容器 前言 环境准备 Linux 服务器一台(我的是 CentOS7)…...

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…...

鸿蒙:@Link装饰器-父子双向同步

子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 需要注意&#xff1a;Link装饰的变量与其父组件中的数据源共享相同的值。Link装饰器不能在Entry装饰的自定义组件中使用。 一、装饰器使…...

Leetcode--27

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…...

使用Eclipse搞Android项目报错

相信现在都没什么人还会用Eclipse来开发的了。 不过安装完后&#xff0c;打开Eclipse会提示我的Jdk版本不符合 --------------------------- Incompatible JVM --------------------------- Version 1.8.0_391 of the JVM is not suitable for this product. Version: 17 or g…...

import sys是什么

import sys语句 允许你使用sys模块提供的各种功能&#xff0c;从而更好地与Python解释器和操作系统底层进行交互。通过熟练掌握sys模块的使用&#xff0c;可以大大提高Python开发的效率和灵活性。 sys模块 是Python的内置模块之一&#xff0c;用于与Python解释器和系统环境交…...

Python爬虫:XPath基本语法

XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位元素的语言。它使用路径表达式来选择节点或节点集&#xff0c;类似于文件系统中的路径表达式。 不啰嗦&#xff0c;讲究使用&#xff0c;直接上案例。 导入 pip3 install lxmlfrom lxml import etr…...

UML/SysML建模工具更新情况(截至2024年1月)(1)UModel 2024

最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;Umple 1.33.0 更新时间&#xff1a;2024年1月10日 工具简介 自称“Model-Oriented Programming”&#xff0c;把图形和文本结合起来&#xff0c;支持Java、PHP和Ruby代码生成&#xff0c;可以在线使用&#xf…...

ubuntu20-github不通问题

github不通 一直在github下载失败 Git报错fatal unable to connect to github.com: github.com[0: 20.205.243.166] >>> alsa-ucm-conf v1.2.6.3 Downloading(卡在这里,很烦啊) 然后搜了很多文档,然后以下操作: 1.GitHub.com - GitHub: Lets build from here Git…...

【MAC】Multi-Level Monte Carlo Actor-Critic阅读笔记

基本思想&#xff1a; 利用多层次蒙特卡洛方法&#xff08;Multi-Level Monte Carlo&#xff0c;MLMC&#xff09;和Actor-Critic算法&#xff0c;解决平均奖励强化学习中的快速混合问题。 快速混合&#xff1f; 在强化学习中&#xff0c;当我们说一个策略"混合得快"…...

[GN] 设计模式—— 创建型模式

文章目录 创建型模式单例模式 -- 确保对象唯一性例子优化饿汉式懒汉式 优缺点使用场景 简单工厂模式例子&#xff1a;优化优缺点适用场景 工厂方法模式 -- 多态工厂的实现例子优缺点优化适用场景 抽象工厂模式 -- 产品族的创建例子优缺点适用场景 总结 创建型模式 单例模式 –…...

链表——超详细

一、无头单向非循环链表 1.结构&#xff08;两个部分&#xff09;&#xff1a; typedef int SLTDataType; typedef struct SListNode {SLTDataType data;//数据域struct SListNode* next;//指针域 }SLNode; 它只有一个数字域和一个指针域&#xff0c;里面数据域就是所存放的…...

【刷题】 leetcode 面试题 08.05.递归乘法

递归乘法 1 题目描述2 思路一&#xff08;返璞归真版&#xff09;3 思路二&#xff08;二进制乘法器版&#xff09;4 思路三&#xff08;变态版&#xff09;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见&#xff01;&#xff01;&#xff01; 1 题目…...

C语言实现希尔排序算法(附带源代码)

希尔排序 希尔排序&#xff0c;也称递减增量排序算法&#xff0c;是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的&#xff1a; 插入排序在对几乎已经排好序的数据操作时&#xff0c;效率高&#xff0…...

R语言【taxlist】——subset():取taxlist对象的子集

Package taxlist version 0.2.4 Description taxlist对象的子集将通过逻辑操作或模式匹配来完成。子集可以引用包含在插槽taxonNames、taxonRelations或taxonTraits中的信息。 Usage ## S4 method for signature taxlist subset(x,subset,slot "names",keep_child…...

单片机学习笔记---定时器计数器(含寄存器)工作原理介绍(详解篇2)

目录 T1工作在方式2时 T0工作在方式3时 四种工作方式的总结 定时计数器对输入信号的要求 定时计数器对的编程的一个要求 关于初值计算的问题 4种工作方式的最大定时时间的大小 关于编程方式的问题 实例分析 实例1 实例2 T1工作在方式2时 51单片机&#xff0c;有两个…...

《动手学深度学习(PyTorch版)》笔记4.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…...

OpenAI发布新模型!ChatGPT性能重磅提升,API大幅降价,GPT-4 「变懒」被修复

OpenAI 对ChatGPT进行了大更新&#xff1a;推出了新一代的嵌入模型&#xff0c;对GPT-4 Turbo模型进行了更新&#xff0c;并将很快对GPT-3.5 Turbo的API进行大幅降价&#xff0c;GPT-4「变懒」行为也被修复。 接下来二狗就带大家看看ChatGPT的这次详细更新。 推出新的嵌入模型…...

【C深度解剖】计算机数据下载和删除原理

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…...

ASTORS国土安全奖:ManageEngine AD360荣获银奖

美国安全今日&#xff08;AST&#xff09;的年度“ASTORS”国土安全奖计划是一个备受瞩目的活动&#xff0c;致力于突显国土安全领域的创新与进步。这一奖项旨在表彰在保护国家免受安全威胁方面做出卓越贡献的个人和组织。该计划汇聚了执法、公共安全和行业领袖&#xff0c;不仅…...

12. 本地算力不足?云服务器选型指南(高性价比+适配大模型)

001、算力困境:为什么我们需要云服务器? 从一次深夜调试说起 上周三凌晨两点,我的本地工作站风扇开始狂转——16核CPU占用率97%,64GB内存基本吃满,两块3090显卡的显存指示灯红得发烫。屏幕上正在跑一个7B参数的模型微调任务,进度条卡在23%已经半小时没动过。终端里突然…...

Asterisk 实战速成:从零搭建企业级呼叫中心

1. 为什么选择Asterisk搭建企业级呼叫中心 第一次接触Asterisk是在2015年&#xff0c;当时公司需要快速搭建一个200坐席的客服系统。市面上商业解决方案动辄几十万的报价让我们望而却步&#xff0c;而Asterisk这个开源PBX系统完美解决了我们的需求。十年过去了&#xff0c;Aste…...

Agentic SOC 全阶成长指南:从零到专家,拿下AI安全运营的黄金赛道

2026年RSAC全球网络安全大会落下帷幕&#xff0c;一个行业共识已经不可逆地形成&#xff1a;Agentic SOC&#xff0c;已经从概念验证阶段&#xff0c;正式成为全球企业安全运营的核心标配。 Gartner最新数据显示&#xff0c;2026年全球Agentic SOC相关市场规模突破127亿美元&am…...

ComfyUI-VideoHelperSuite全流程掌控:解锁10倍视频处理效率

ComfyUI-VideoHelperSuite全流程掌控&#xff1a;解锁10倍视频处理效率 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 构建高效视频工作流 环境部署与基础配置 …...

AI辅助开发:让快马AI成为你的Git助手,用自然语言搞定复杂版本操作

今天想和大家分享一个特别实用的开发工具思路——用AI来辅助完成那些复杂的Git版本控制操作。作为一个经常要和Git打交道的开发者&#xff0c;我深刻体会到&#xff0c;有些操作虽然Git本身支持&#xff0c;但命令组合起来特别容易出错&#xff0c;尤其是涉及历史版本比较、提交…...

Phi-3-mini-128k-instruct企业级应用:基于Dify构建智能客服知识库

Phi-3-mini-128k-instruct企业级应用&#xff1a;基于Dify构建智能客服知识库 最近和几个做企业服务的朋友聊天&#xff0c;大家普遍有个头疼的问题&#xff1a;客服团队每天要处理大量重复的产品咨询和技术问题&#xff0c;人力成本高不说&#xff0c;新员工培训周期还特别长…...

Qwen3-VL-8B新手入门:无需代码,用聊天界面轻松玩转AI识图

Qwen3-VL-8B新手入门&#xff1a;无需代码&#xff0c;用聊天界面轻松玩转AI识图 1. 工具简介&#xff1a;你的AI视觉助手 想象一下&#xff0c;当你看到一张复杂的图表却不知道如何解读&#xff0c;或者需要快速了解一张照片中的关键信息时&#xff0c;有一个随时待命的AI助…...

EasyAnimateV5-7b-zh-InP模型在微信小程序中的应用:短视频生成功能实现

EasyAnimateV5-7b-zh-InP模型在微信小程序中的应用&#xff1a;短视频生成功能实现 1. 为什么要在微信小程序里集成视频生成能力 最近帮几个做社交内容的小团队做技术咨询&#xff0c;发现一个特别有意思的现象&#xff1a;用户发朋友圈、发群聊、发公众号时&#xff0c;对短…...

AI 模型推理框架对比 TensorRT vs ONNX

AI模型推理框架对比&#xff1a;TensorRT与ONNX的深度解析在人工智能技术飞速发展的今天&#xff0c;模型推理框架的选择直接影响着部署效率与性能表现。NVIDIA推出的TensorRT与微软主导的ONNX作为两大主流推理框架&#xff0c;各自拥有独特的优势与适用场景。本文将从多个维度…...

Chain-of-Thought Hub进阶应用:多轮对话和长上下文推理评测

Chain-of-Thought Hub进阶应用&#xff1a;多轮对话和长上下文推理评测 【免费下载链接】chain-of-thought-hub Benchmarking large language models complex reasoning ability with chain-of-thought prompting 项目地址: https://gitcode.com/gh_mirrors/ch/chain-of-thou…...