「硬核分享」Docker+jenkinsPipeline 运行实现 python 自动化

news2024/9/30 21:26:36

一、实现思路

  1. 在 Linux 服务器安装 docker

  2. 创建 jenkins 容器

  3. jenkins 中创建 pipeline 项目

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

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

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

二、环境准备

  • Linux 服务器一台(我的是 CentOS7) 1、有云服务器的同学直接用云服务器2、没有云服务器的同学参考我的博客自己动手安装虚拟机吧

  • 在服务器上正确安装 docker 1、拉取 jenkins 镜像jenkins/jenkins:alpine2、拉取 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 容器创建成功

添加图片注释,不超过 140 字(可选)

四。 配置 jenkins 容器

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

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

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

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

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

配置实例

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

五。 jenkins 安装插件

点上一步骤开始使用 jenkins,来到如下界面

点 Manage Jenkins 来到如下页面

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

2、Docker 插件安装

3、HTML Publisher 插件安装

4、安装 Pipeline 插件

5、安装完成后重启 jenkins 容器 docker restart jenkins_save01

六。 创建 jenkins 任务

重新登陆 jenkins,点 New Item


选择创建 Pipeline 项目

配置构建记录保留规则

配置 Git 仓库

添加 Git 凭证

配置 Jenkinsfile 路径

配置完成直接点保存即可

七。 构建有项目执行环境的 python 镜像

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

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

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

  4. requirement.txt 恩建内容如下

 
 

unittestreport==1.3.2 openpyxl==3.0.7 ddt==1.4.2 pytest==6.2.2 selenium==3.141.0 pymysql==1.0.2 faker==8.1.0 jsonpath==0.82 BeautifulReport==0.1.3 rsa==4.7.2 pytest-html==3.1.1 allure-pytest==2.9.43 requests-toolbelt==0.9.1

5.Dockerfile 内容以及解释如下

 
 

FROM 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是我们自动化框架的执行入口文件

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

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

八、创建 build.sh 文件并放到项目根目录下

 
 

echo "运行容器python执行自动化" docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:haili echo "python执行自动化执行成功"

九、写 Jenkinsfile 文件并将放到项目根目录下

 
 

pipeline{ //配置执行环境 agent any //配置构建过程 stages{ stage('build'){ steps{ echo '开始执行shell脚本' sh 'sh build.sh' } }//stage }//stages //配置构建后操作 post{ always{ echo 'Pipeline 构建成功' publishHTML(target:[allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: 'reports', reportFiles: '*.html', reportName: 'My Reports', reportTitles: 'The Report']) } }//post }//pipeline

十、提交代码到远程仓库

Git add .

Git commit -am'update'

Git push

十一、构建你 jenkins 任务

点构建

查看构建日志

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

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

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

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

重新构建就可以看到漂亮的测试报告了

都看到这了,点个赞再走呗!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Defining Timing Constraints and Exceptions(UG945)

在本实验中,将学习为设计创建约束的两种方法。将使用Vivado2019.2 IDE中包含的Kintex-7 CPU网表示例设计。 步骤1:打开示例项目 1.打开Vivado IDE。 Vivado IDE的“Getting Started page”包含打开或创建项目以及查看文档的链接。 2.在“Getting Started…

泛型编程与模板简单介绍,函数模板及其原理与template,typename,模板参数T,函数模板隐式实例化等

泛型编程 比方说现在要去实现一个通用的交换函数,以我们现在的思路,肯定是通过函数重载去解决。但是这样子的话有几个缺点:重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己…

水溶性花菁染料Sulfo-CY7 NHS este标记活性脂Cyanine7-NHS

Sulfo-CY7 NHS ester是一种荧光标记试剂,化学结构为C38H42KN3O10S2,分子量约为803.98 。此外,它的分子中还含有一个N-羟基琥珀酰亚胺酯基团,这个基团可以与生物分子中的氨基结合,从而实现荧光标记。Sulfo-CY7 NHS este…

Moonbeam联合Multichain和AWS Startups正式推出Bear Necessities Hackathon黑客松

我们很高兴宣布Bear Necessities Hackathon正式启动。本次黑客松包含7个挑战,超过7万美金的奖池等你来领!我们欢迎所有的BUILDers参加,这是开发者们探索Moonbeam并构建跨链用例的机会! 本次黑客松由Moonbeam、Multichain和AWS St…

js原生实现pc端日历组件

业务场景 客户要求日期选择使用pc端的样式,前端在x5平台上,也就是需要用原始html、js、css等实现,笔者使用于 原生javascript封装的PC端日历插件,不依赖任何第三方插件,复制的代码文件较长,可跳到 总结 处…

使用whistle对安卓手机进行调试

注意:手机调试的时候需要与电脑连同一个wifi。 1、安装whistle npm install -g whistle2、运行 whistle w2 start3、打开电脑浏览器 输入 http://10.53.40.72:8899/ ,点击二维码,可以生成 rootCA.crt 证书,把它发到手机上&…

mysql8查看锁

一。准备环境 1.登录mysql,设置锁等待时间,然后退出。 mysql> set global innodb_lock_wait_timeout1200; Query OK, 0 rows affected (0.00 sec) 2.再次登录MySQL。打开第一个session 3.登录msyql,打开第二个session a:…

Rasa 3.x 学习系列-Rasa [3.5.8] -2023-05-12新版本发布

Rasa 3.x 学习系列-Rasa [3.5.8] -2023-05-12新版本发布 当自定义动作设置的值与槽的现有值相同时,将触发SlotSet事件。修复了这个问题,使AugmentedMemoizationPolicy能够正确地处理截断的跟踪器。 为了恢复以前的行为,自定义操作只有在槽值…

使用VSCode创建第一个ESP-IDF项目

1.在VSCode中安装ESP-IDF: 在 VS Code 中安装 ESP-IDF: 在-VS-Code-中安装-ESP-IDF、新建项目 安装过程中可能会遇到的问题: 解决-pip-安装第三方包时因-SSL-报错_pip-ssl error 在完全使用VSCode安装ESP-IDF环境后,不会存在ESP-IDF Termin…

【利用AI刷面试题】AI:十道Vue面试题巩固一下知识

文章目录 1. 你在Vue中遇到过哪些性能问题?如何优化这些性能问题?2. Vue生命周期钩子函数有哪些?在什么情况下使用它们?3. Vue组件通信方式有哪些?它们各自适用于哪些场景?4. 你了解diff算法吗?…

Hadoop(Yarn)

文章目录 1、Yarn 资源调度器1.1 Yarn 基础架构1.2 Yarn 工作机制1.3 作业提交全过程1.4 Yarn 调度器和调度算法1.4.1 先进先出调度器(FIFO)1.4.2 容量调度器(Capacity Scheduler)1.4.3 公平调度器(Fair Scheduler&…

万物可卷!低代码充满想象,能打敢战

数字中国建设如火如荼,我们也在积极拥抱这些机会。一火再火,疯狂和理性并存,高潮迭起的低代码赛道常兴常青,无论如何,不管是否承认,中国低代码市场已然觉醒,能打敢战! 低代码开发是…

【AI实战】给类ChatGPT的大语言模型外挂私有知识库

【AI实战】给类ChatGPT的大语言模型外挂私有知识库 原理准备环境代码下载 chatglm-6b 模型权重文件下载 Embedding 模型 GanymedeNil/text2vec-large-chinese安装依赖库我的计算资源 外挂知识库开启服务外挂知识库 测试参考 本文使用 langChain 来给大语言模型 ChatGLM-6B 外挂…

【数据结构】——排序

排序的概念及其运用 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录&am…

计算机图形学 | 实验八:Phong模型

计算机图形学 | 实验八:Phong模型 计算机图形学 | 实验八:Phong模型Phong模型光源设置 光照计算定向光点光源聚光 华中科技大学《计算机图形学》课程 MOOC地址:计算机图形学(HUST) 计算机图形学 | 实验八&#xff1a…

挖掘有价值的用户需求 需警惕5大误区

1、听取用户等于听从用户 在挖掘有价值的用户需求时,往往需要认真倾听用户的想法和需求,这样我们非常容易陷入到用户的思维中去。用户提到的需求,是他们真实想要的需求,但并不一定是客观需求,因为用户往往并不清楚他们…

【GDI+】旋转文本/斜体字

一、需求 想要绘制如下所示的斜体字,45度 二、分析&思路 Graphics类有个 RotateTransform方法,可以传入任意角度的值来旋转画板。但是这个方法的旋转中心是画板的左上角,所以直接单单用这个方法不能满足我们的需求。此外, G…

5个视频剪辑必备素材库、视频、配乐、音效全部免费下载。

推荐几个免费视频、配乐素材网站,可商用,建议收藏! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材也很多,像风景、植…

Jmeter响应断言

1、断言介绍 断言用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。 Request请求成功了,并不代表结果一定正确。所以通过断言,我们不再会被200状态码所迷惑,而是可以通过断言&#xff0c…

搭建新项目 前端环境 及启动项目前的相关配置

** 搭建新项目 前端环境 及启动项目前的相关配置 ** 文章目录 搭建新项目 前端环境 及启动项目前的相关配置 前言一、编程 语言及框架二、步骤1.打开 VS2.导入项目3、配置地址及 请求端口4、启动项目5、查看报错 的日志文件6、运行 命令 安装相关有依赖及 jar 包7、特别要注…