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

【测试】持续集成CI/CD

近期更新完毕,建议关注收藏点赞~


目录

  • 概括
  • git
  • Jenkins
  • postman集成jenkins
  • 代码集成jenkins

概括

CI/CD stands for Continuous Integration and Continuous Deployment

  • 定义
    团队成果持续集成到公共平台。一天可以集成1次or多次
    本地代码管理 git
    远程代码管理 gitee(国内),github,gitlib(公司私有服务器)
    持续集成 jenkins

git

  • git配置用户名和邮箱
    本地管理代码
git config --global user.email "xx@email.com"
git config --global user.name "username(可任意写,不可用中文)"
#设置成功后没有成功信息提示

git安装目录
在这里插入图片描述

  • gitee
    线上集成平台
    • pull下来线上项目
      pycharm->最顶部tab栏VCS(如果是Git则表示该项目正在被git管理中)->get from/check out version control->
      在这里插入图片描述
      仓库名直接决定了这个目录项目名叫什么。
    • push上去项目
      VCS->share project on gitee
      如果打开了两个项目,只推排第一个项目,应保持只打开一个项目
      log in to gitee授予pycharm权限登陆gitee
      在这里插入图片描述
  • 更新push到远程仓库
    前提:是Git项目
    整体流程为add->commit->push
    右键点击项目名->git->先添加后提交->必填描述->提交完成后同样的地方点击推送
    在这里插入图片描述
  • 仓库更新的代码pull到本地
    指的是相同的项目,线上代码做了更新。
    右键点击项目名->git->拉取
  • 解决冲突
    本地和线上的某一处代码各有不同的更新,不同步。
    在这里插入图片描述
    点击merge->merge->讨论到底选谁的版本
    在这里插入图片描述
    出现上述的提示,先拉取远端版本,重新提交之前更新内容。
    • 如何避免冲突:先pull,(更新代码),再push

Jenkins

  • java编写的,必须安装JDK (JAVA SE8)自动装下面两个环境
    jdk java开发环境
    jre java运行环境
java -version

Windows需要配置环境变量
系统变量->java\jdk1.8.x_xx\bin

  • 安装Jenkins
    注意必须安装到用户主目录下,且只有一个.jenkins/目录,不允许两层.jenkins嵌套
    创建一个层级不深的目录,放入jenkins.war,便于启动方便
java -jar jenkins.war
#注意不要用鼠标点击终端内部;使用jenkins过程中不能关闭终端,否则服务终止
java -jar jenkins.war --httpPort=8889

浏览器中输入http://localhost:8080 不要勾选保持登陆状态
默认用户名密码是admin 123456
如果长时间访问失效,关闭终端,更换端口重新启动服务。

jenkins左边菜单栏->manage jenkins->manage plugins->可选插件->插件名称html publisher 这个必须安装

  • 配置系统邮箱
    登陆163邮箱->设置->POP3/SMTP/IMAP->开启
    启动jenkins服务器,http://localhost:8080进入,
    左侧边栏->manage jenkins->configure system进入系统配置界面->Jenkins location将邮箱地址改成自己的163邮箱
    ->下拉页面,找到extended email notification->高级->username填邮箱,password写163邮箱授权码
    ->下拉到底部,邮箱通知->高级->同样填入用户名和密码(依然是授权码)->保存

postman集成jenkins

  1. 打开已完成且测试无误的postman项目,再次执行测试
  2. 导出测试用例集、环境变量两个文件,不支持中文,需要全部改成英文
  3. 终端打开,执行无误,查看newman生成的测试报告文件
#注意是htmlextra 不是html 多年之前已经停止维护了
newman run 测试集文件 -e 环境变量文件 -d 测试数据文件 -r htmlextra --reporter-htmlextra-export report.html
#run xx.json 执行测试集文件
#-r 生成测试报告类型
#--reporter-html-export path存放路径
# -d -e是非必需的
  • 使用jenkins管理 手动构建
    jenkins->新建item->freestyle project->创建成功,
    进入该项目->构建->增加构建步骤->windows选execute windows batch command,mac选execute shell->在这框中加入刚刚能成功运行的newman命令
    ->增加“构建后操作”->选publish html reports->新增reports,这里面的index pages中的.html文件命名应当与newman命令中生成的.html名一致->应用+保存

进入该项目,左侧边栏出现build now点击就可以出现测试报告,如果有失败测试用例,本次build最前面的图标为红色

点击构建好的结果,进入页面->控制台输出,可以看到execute设置的命令(这里就是newman run)执行过程的调试信息

如何找到这个生成的测试报告?点击工程项目页左边边栏会出现生成的测试报告title

  • 使用jenkins管理 自动构建
    设置定时,时间到则jenkins自动执行测试用例+build。
    配置-> 构建触发器 ->build periodically-> 日程表【格式:分 时 日 月 年,不指定的就用*代替,如40 16 * * *表示每天16:40执行】
  • 报告显示不正常的原因
    jenkins避免受到恶意攻击,设置安全策略CSP,只允许加载jenkins服务器上托管的css文件和图片文件。如果不担心被恶意攻击,可以绕过安全策略。
#启动时添加一个参数即可
java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar Jenkins.war
#启动之后之前生成的报告还是原样,新生成的报告会有变化

代码集成jenkins

  • 前提:将无问题的项目代码上传到gitee/github
    -手动构建
    步骤:跟之前的步骤差不多,这里只提不同的地方:
    构建->源码管理->Git->添加仓库URL
    构建->增加构建步骤->命令改成python run_suite.py (项目全局执行入口文件)
    ->“构建后操作”增加,同样index pages里面.html名称要跟run_suite.py里的.html命名相同;项目代码中要求报告放在/report目录下,则HTML directory to archive 填写report(目录名)
    ->继续增加构建后操作步骤,editable email notification。project recipient list直接在默认后面加逗号分隔符,放收件人的邮箱;content-type选择邮件内容类型;default content设置邮件内容样式,可参考html格式模版;
    ->advanced settings,triggers如果默认设置不采用点击右上角红叉❌,add trigger->always成功失败都发送

后续同理,点击build now就完成了手动构建

  • 自动构建
    • 生成报告触发器 :同样,配置->构建触发器 build periodically
    • 另一种触发器,检查gitee上的代码是否有更新
      配置->构建触发器->poll SCM->也是5个*的设置多久检查一次,数字前面加’/'表示隔多久检查一次,如*/1 * * * *表示每1分钟检查一次
      只要代码发生变化,到时间build history就会增加一条
http://www.lryc.cn/news/519637.html

相关文章:

  • 阿里云直播Web
  • DuckDB:PRAGMA语句动态配置数据库行为
  • GO通过SMTP协议发送邮件
  • 轻量自高斯注意力机制LSGAttention模型详解及代码复现
  • 解读若依框架中的`@Excel` 和 `@Excels` 注解
  • 云商城--基础数据处理和分布式文件存储
  • 六十九:基于openssl实战验证RSA
  • Three.js 用户交互:构建沉浸式3D体验的关键
  • Android车机DIY开发之学习篇(五)默认应用修改
  • linux 设置mysql 外网访问
  • SQL UNION 操作符
  • c++ 17 constexpr
  • Java QueryWrapper groupBy自定义字段,以及List<Map>转List<Entity>
  • 【Rust自学】11.7. 按测试的名称运行测试
  • Git:Cherry-Pick 的使用场景及使用流程
  • Ubuntu 24.04 LTS系统安装Docker踩的坑
  • 工作生活的感悟
  • NCCL学习笔记-函数解析
  • windows系统如何将基座大模型私有化部署
  • 牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定
  • CentOS 7 下 MySQL 5.7 的详细安装与配置
  • 【深度学习】数据预处理
  • day01-HTML-CSS——基础标签样式表格标签表单标签
  • 无需昂贵GPU:本地部署开源AI项目LocalAI在消费级硬件上运行大模型
  • 搭建prometheus+grafana监控系统抓取Linux主机系统资源数据
  • uni-app无限级树形组件简单实现
  • 基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)
  • 请求方式(基于注解实现)
  • day38 tcp 并发 ,linux下的IO模型----IO多路复用
  • 更新Office后,LabVIEW 可执行程序生成失败