论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
自动化脚本当地可执行但是Jenkins上各种报错怎么解决 ...
自动化脚本当地可执行但是Jenkins上各种报错怎么解决
慢吞云雾缓吐愁
论坛元老
|
2025-1-10 06:15:58
|
显示全部楼层
|
阅读模式
楼主
主题
1029
|
帖子
1029
|
积分
3087
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
作者碎碎念:
测试环境 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搭建自动化集成环境 渴望能资助到共同进步的同砚
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
慢吞云雾缓吐愁
论坛元老
这个人很懒什么都没写!
楼主热帖
聊聊 C# 方法重载的底层玩法 ...
使用 Mypy 检查 30 万行 Python 代码, ...
Linux安装PHP8 新版笔记
微信公众平台测试号申请、使用HBuilder ...
Blazor WebAssembly + Grpc Web = 未来 ...
【只与自己有关】人往高处走?何为高? ...
【MAC工具】各个Xcode版本对应macOS的 ...
Apache Shiro 身份验证绕过漏洞 (CVE-2 ...
Mybatis基础知识大全!!!
Java多线程(7):JUC(上)
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
Mysql
云原生
运维.售后
移动端开发
虚拟化与私有云
SQL-Server
MES
网络安全
快速回复
返回顶部
返回列表