自动化脚本本地可执行但是Jenkins上各种报错怎么解决

作者碎碎念:

测试环境 Jenkins+docker+python+unittest, 
测试问题:本人在写关于SAP4Me网站的自动化脚本时遇到一个问题 本地怎么都跑的通 但是一上Jenkins会出现各种各样的问题 因为在Jenkins里面脚本是放在docker环境里面跑的 所以环境的差异 就会出现各种各样需要调试的问题 比如什么路径找不到 浏览器启动失败等等 一开始因为pipline cript写在Jenkins平台上 加上这个对docker理解不深 一直本地调试 再gitpush去Jenkins上看日志 真的很呆 经过去学习了docker方面的知识之后 发现可以在本地起docker环境 直接本地调试 所有问题解决了之后再去push到git上 然后去Jenikins上执行pipline 就会一次成功 具体做法如下:

目录

1、下载docker并安装

2、去平台上找一个适配的基础镜像

1、进入docker hub 

2、搜索关键字python并下载对应的镜像

3、在看到适合自己需求的版本之后利用dockerpull+image的名字把这个基础镜像拉到本地

3、基于这个基础的镜像写dockerfile

4、打开命令窗口 docker build 一个新的镜像

5、基于新镜像run一个container并进入交互模式

6、在交互模式下run你的脚本

7、根据报错调试你的脚本并重复docker build -> run -it

8、push脚本 到Jenkins执行pipline


1、下载docker并安装

我是直接下载的docker桌面版 如果有更方便的方法欢迎下方留言
docke下载地址:官方doker desktop下载地址
下载完成直接逐步安装就好 这里不再赘述 但是要提一嘴的是 在本地每次build之前要先打开docker 否则会报无法连接的错误

2、去平台上找一个适配的基础镜像

举个例子 我的脚本是python语言 那么我去找一个有python的基础镜像就可以 后续所需要的chromedriver等依赖都可以后续进行安装 所有要安装的依赖以及要进行的操作定义在这个dockerfile里面就行 后续docker build的时候会自动下载

那么我们去哪里找这么一个镜像呢 -》 去Docker Hub ,这里提一嘴,Docker Hub是 Docker 的官方仓库,用于存储和分享 Docker 镜像

1、进入docker hub 

2、搜索关键字python并下载对应的镜像

3、在看到适合自己需求的版本之后利用dockerpull+image的名字把这个基础镜像拉到本地

要注意的是 docker内的镜像是为了完全copy你本地的环境 所以要尽量选择与本地python版本一致的 定义docekerfile的时候下载依赖的版本也是同理

3、基于这个基础的镜像写dockerfile

有了这个镜像之后相当于有了地基 我们要开始盖房子了 一切准备好 就可以把我们的脚本放进去跑 那怎么理解盖房子的这个过程 就需要用到docker file

dockerfile具体的写法不作赘述 详情看我另外一篇文章

4、打开命令窗口 docker build 一个新的镜像

这个就比较简单了 直接docker build + 镜像名字
举例:

docker build -t chrome-debug .

这里 -t 选项用于为构建的 Docker 镜像指定标签(tag)。标签是镜像名称的一部分,帮助用户标识和管理镜像。镜像的完整标签格式通常是 repository:tag,例如 myapp:latest

5、基于新镜像run一个container并进入交互模式

有了镜像之后我们相当于只有一个房子的照片 但是还没有搭建完成 需要docker run 才是把这个房子真正的搭建起来并且把脚本(当作人)也放进去跑

这里我比较喜欢用docker run -it 直接进入交互模式 更多进入交互模式的方法可以看我这篇文章
举例:

docker run -it --name selenium-debug-path chrome-debug sh

这一命令的作用是使用 chrome-debug镜像创建并启动一个新的容器,同时进入该容器的交互式 Shell 环境。容器被命名为 selenium-debug-path,用户可以在这个容器内手动输入和执行命令。通常,这种操作用于调试或需要手动在容器内执行一些操作的场景。 

-it:

  • -i:交互模式,保持标准输入(stdin)打开,即使没有连接到终端。这允许用户在容器中手动输入命令。
  • -t:分配一个伪TTY(虚拟终端),-i 结合使用时,可以使用户进入到一个交互式的Shell环境。

sh:

  • 这是在容器启动后执行的命令。在这个例子中,sh 代表 Shell,它会启动一个 Shell 会话,使用户能够在运行的容器中进行交互操作。如果镜像是基于 Linux 的,如 Ubuntu、Alpine 等,这些镜像通常带有 /bin/sh

6、在交互模式下run你的脚本

进去之后就是一个正常的linux命令行页面 可以用python + 脚本名字去运行你想调试的脚本看看什么报错
示例:

7、根据报错调试你的脚本并重复docker build -> run -it

但其实也有办法能够实时同步你的脚本不用重新build+run的办法 不过我没有学习那么深 感兴趣的同学可以自己去学习一下

8、push脚本 到Jenkins执行pipline

在本地调试成功之后就可以直接push到git那边了 结合Jenkins上写好的pipline script去运行一下看看是否成功

这边给一个小建议 最好后期将这个script写成Jenkinsfile放在自己的项目的根目录下 对应Jenkins上改成from SCM 不然调试的时候来回改很容易改错了忘了是哪里改错了



 其实这篇文章算是一个经验分享 因为自己从0搭建自动化集成环境 希望能帮助到共同进步的同学

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

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

相关文章

TaskBuilder前端组件简介

3.3.3.1前端组件的分类 前端页面是由众多组件层层嵌套构成的,这些组件是任讯信息自主研发的一套前端UI组件,称为tfp组件,这些组件根据其功能和特点又分为几大类,它们的继承关系如下图所示: 从图中可知,所…

linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

前言 今天在使用linux的时候,使用上下键想翻出历史命令时,却出现[[A[[A[[A[[B^[[B这种东东,而tab键补全命令的功能也无法使用。最终发现是由于当前用户使用的shell是/bin/sh的原因。 解决方法 运行以下命令,将默认 shell 设置为…

FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )

以Xilinx 公司Virtex-II 系列FPGA 为例,其基本结构由下图所示。它是主要由两大部分组成:可编程输入/输出(Programmable I/Os)部分和内部可配置(Configurable Logic)部分。 可编程输入/输出(I/Os…

《零基础Go语言算法实战》【题目 1-11】格式化字符串

《零基础Go语言算法实战》 【题目 1-11】格式化字符串 在 Go 语言中,找到使用变量格式化字符串而不打印值的简单方法。 【解答】 在 Go 语言中,在不打印值的情况下进行格式化的最简单方法是使用 fmt.Sprintf() 函数, 它返回一个格式化的…

Virtualbox7.1.4安装Proxmox

准备工作 有以下两个大步骤: 第一步、安装Virtualbox 最新版本安装过程遇到问题参考: VirtualBox新版本报错 Invalid installation directory解决方案_virtualbox invalid installation directory-CSDN博客 第二步、下载Proxmox 官网下载地址&…

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…

yum换源

背景描述 源:阿里云: 系统:centos7 https://developer.aliyun.com/mirror/其他参考地址: https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11UchtP5https://developer.aliyun.com/mirror/centos-vau…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…

AIDD-人工智能药物设计-人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题

mLife | 人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题 优化酶的热稳定性对于蛋白质科学和工业应用至关重要。目前,通过(半)理性设计和随机诱变方法可以较为准确地设计多个增强酶热稳定性的单点突变。但当组合多个突变时&#…

Apache Hadoop YARN框架概述

一、YARN产生和发展简史 1.1背景 数据、程序、运算资源(内存、CPU)三者组在一起,才能完成数据的计算处理过程。在单机环境下,三者之间协调配合不是太大问题。为了应对海量数据的处理场景,Hadoop软件出现并提供了分布…

江科大STM32入门——UART通信笔记总结

wx:嵌入式工程师成长日记 1、简介 简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接当只需单向的数据传输时,可以只接一根通信线当电平标准不一致时,需要加电平转换芯片 传输模式:全双工;时钟&…

KG-CoT:基于知识图谱的大语言模型问答的思维链提示

一些符号定义 知识图谱实体数量: n n n 知识图谱中关系类型数量: m m m 三元组矩阵: M ∈ { 0 , 1 } n n m \textbf{M} \in \{0, 1\}^{n \times n \times m} M∈{0,1}nnm, M i j k 1 M_{ij}^k 1 Mijk​1则说明实体 i i i和实…

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题,可以利用Github Action将需要的镜像转存到阿里云私有仓库,然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址:使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…

AIGC 新浪潮|Story CN meetups 将于 1 月 10-14 日举办!

随着 Web3 行业发展进入全新阶段,与生成式人工智能(AIGC)技术融合正在创造潜力新星项目。也是目前的互联网生态下,任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容,带来了用户生成内容(UGC&am…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

黑马跟学.苍穹外卖.Day04

黑马跟学.苍穹外卖.Day04 苍穹外卖-day04课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常…

SOLID原则学习,开闭原则

文章目录 1. 定义2. 开闭原则的详细解释3. 实现开闭原则的方法4. 总结 1. 定义 开闭原则(Open-Closed Principle,OCP)是面向对象设计中的五大原则(SOLID)之一,由Bertrand Meyer提出。开闭原则的核心思想是…

filebeat、kafka

elk的架构 es数据库:非关系型数据库,json格式 logstash:收集日志 kibana:图形化的工具 ↓ 以上三种结合起来即为日志收集系统 filebeat 作用:filebeat是一款轻量级的日志收集工具,不依赖java环境&…

Qt重写webrtc的demo peerconnection

整个demo为: 可以选择多个编码方式: cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…