首页 > 编程语言 >mac+docker+jenkins,运行python自动化

mac+docker+jenkins,运行python自动化

时间:2023-04-25 09:35:53浏览次数:38  
标签:容器 python mac 构建 镜像 jenkins docker

一、实现思路

  1. 在mac本地安装Docker Desktop

  2. 创建jenkins容器

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

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

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

二、环境准备

1、一台mac

2、在mac上安装Docker Desktop,打开软件

3、在docker上拉取Jenkins镜像(我这里用的是一位朋友的包)

qinhaili/new_enkins:haili

4、在docker上拉取python镜像(我这里用的是一位朋友的包)

qinhaili/python3:haili

三、创建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 qinhaili/new_enkins:haili
  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://localhost:9999

 2、在终端内输入命令获取管理员密码

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镜像

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

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

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

  • requirements.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
  • 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目录下,点表示当前目录

  • 构建成功后会看到一个新的镜像(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:haili
echo "python执行自动化执行成功"

      1)将build.sh复制到你的项目根目录下

2)提交代码到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","")

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

 

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

 



标签:容器,python,mac,构建,镜像,jenkins,docker
From: https://www.cnblogs.com/xxhh123/p/17349559.html

相关文章

  • 【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介代理模式(ProxyPattern)是一种结构型设计模式,用一个类来代理另一个类或几个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问......
  • python_高级
    元组的初始化39行分割字符串,然后直接放到元组里面通过静态方法或类方法实例对象然后返回34行和40行,静态方法和类方法创建实例对象,然后返回34行和41行76和79行,一般来说,创建实例对象都是直接通过调用类名new一个实例对象,但是有时候,调用有些要传入__init__(......
  • 自定义Python版本ESL库访问FreeSWITCH
    环境:CentOS7.6_x64Python版本:3.9.12FreeSWITCH版本:1.10.9一、背景描述ESL库是FreeSWITCH对外提供的接口,使用起来很方便,但该库是基于C语言实现的,Python使用该库的话需要使用源码进行编译。如果使用系统自带的Python版本进行编译,过程会比较流畅,就不描述了。这里记录下使用自定义......
  • Python_12 多继承与多态
    一、查缺补漏1.self和super的区别:self调用自己方法,super调用父类方法当使用self调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找而当使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。2.Alt+回车下载包3.国内源地址,和镜像......
  • Python_11 类的方法
    一、查缺补漏1. 实例方法必须用类实例化对象()来调用,用类来调用时会执行,但是self中不是实例化类地址而是传的字符串二、类中的方法1. 实例方法1. 定义在类里面的普通方法(函数)2. 第一个参数必须是类实例,在方法调用的时候会自动传递,这个参数名称可以随便定义默认self3.......
  • Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型|附代
    原文链接:http://tecdat.cn/?p=27058最近我们被客户要求撰写关于因果推断与增量的研究报告,包括一些图形和统计输出。使用ML进行提升建模和因果推理Python包提供了一套使用基于最近研究的机器学习算法的提升建模和因果推理方法。允许用户根据实验或观察数据估计条件平均处理效......
  • python3.10升级pip命令-国内镜像源
    国内镜像源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplesome-packagepython3.10升级pip命令python.exe-mpipinstall--upgradepip安装pipinstallpip-review查看可更新pip-review批量自动更新pip-review--auto......
  • Python中的哈希表
    哈希表是一种常用的数据结构,广泛应用于字典、散列表等场合。它能够在O(1)时间内进行查找、插入和删除操作,因此被广泛应用于各种算法和软件系统中。哈希表的实现基于哈希函数,将给定的输入映射到一个固定大小的表格中,每个表项存储一个关键字/值对。哈希函数是一个将任意长度的输入映......
  • Python学习——Day4
    一、嵌套if·语法结构:if条件表达式1:  if内层条件表达式:   内存条件执行体1  else:   内存条件执行体2else: 条件执行体answer=input('您是会员吗?y/n')money=float(input('请输入您的购物金额:'))ifanswer=='y':ifmoney>=200:print('打8折,......
  • python-高频面试题
    面试题汇总1.生成器使用了yield关键字的函数称为生成器,生成器是一个自定义的迭代器。函数中有yield关键字时,函数名加()不会执行函数体代码,而是会生成一个生成器。生成器内只有__iter__和__next__方法。生成器对比return可以返回多次值,可以挂起保存函数的运行状态,而遇到return就......