【测试】持续集成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.mzph.cn/diannao/66748.shtml

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

相关文章

python基础和redis

1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载&#xff0…

【再谈设计模式】模板方法模式 - 算法骨架的构建者

一、引言 在软件工程、软件开发过程中,我们经常会遇到一些算法或者业务逻辑具有固定的流程步骤,但其中个别步骤的实现可能会因具体情况而有所不同的情况。模板方法设计模式(Template Method Design Pattern)就为解决这类问题提供了…

安卓app抓包总结(精)

前言 这里简单记录一下相关抓包工具证书的安装 burp证书安装 安装证书到移动设备(安卓7以后必须上传到设备系统根证书上) 导出证书 openssl x509 -inform DER -in cacert.der -out cacert.pem 转换格式 openssl x509 -inform PEM -subject_hash_old -in cacert.pem …

【pycharm发现找不到python打包工具,且无法下载】

发现找不到python打包工具,且无法下载 解决方法: 第一步:安装distutils,在CMD命令行输入: python -m ensurepip --default-pip第二步:检查和安装setuptools和wheel: python -m pip install --upgrade …

2025年VGC大众汽车科技社招入职测评综合能力英语口语SHL历年真题汇总、考情分析

早在1978年,大众汽车集团就开始了与中国的联系。1984年,集团在华的第一家合资企业—上汽大众汽车有限公司奠基成立;1991年,一汽-大众汽车有限公司成立;2017年,大众汽车(安徽)有限公司…

【NLP 18、新词发现和TF·IDF】

目录 一、新词发现 1.新词发现的衡量标准 ① 内部稳固 ② 外部多变 2.示例 ① 初始化类 NewWordDetect ② 加载语料信息,并进行统计 ③ 统计指定长度的词频及其左右邻居字符词频 ④ 计算熵 ⑤ 计算左右熵 ​编辑 ⑥ 统计词长总数 ⑦ 计算互信息 ⑧ 计算每个词…

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…

图漾相机基础操作

1.客户端概述 1.1 简介 PercipioViewer是图漾基于Percipio Camport SDK开发的一款看图软件,可实时预览相机输出的深度图、彩色图、IR红外图和点云图,并保存对应数据,还支持查看设备基础信息,在线修改gain、曝光等各种调节相机成像的参数功能…

【好书推荐】数字化转型参考书籍Rewired

Rewired 封面 图片来源:https://e.dangdang.com/products/1901358558.html 如果做企业数字化转型工作,只能推荐一本书,我会推荐2024年6月中信出版社出版的Rewired 《麦肯锡讲全球企业数字化》。 果总为这本书写了一篇推荐,供大…

WPF控件Grid的布局和C1FlexGrid的多选应用

使用 Grid.Column和Grid.Row布局,将多个C1FlexGrid布局其中,使用各种事件来达到所需效果,点击复选框可以加载数据到列表,移除列表的数据,自动取消复选框等 移除复选框的要注意!!!&am…

ffmpeg7.0 合并2个 aac 文件

ffmpeg7.0 将2个aac文件合并。 #include <stdio.h>// 之所以增加__cplusplus的宏定义&#xff0c;是为了同时兼容gcc编译器和g编译器 #ifdef __cplusplus extern "C" { #endif #include <libavformat/avformat.h> #include <libavcodec/avcodec.h>…

FreePBX 17 on ubuntu24 with Asterisk 20

版本配置&#xff1a; FreePBX 17&#xff08;最新&#xff09; Asterisk 20&#xff08;最新Asterisk 22&#xff0c;但是FreePBX 17最新只支持Asterisk 21&#xff0c;但是21非LTS版本&#xff0c;所以选择Asterisk 20&#xff09; PHP 8.2 Maria DB (v10.11) Node J…

2025-微服务—SpringCloud-1~3

2025-微服务—SpringCloud 第一章、从Boot和Cloud版本选型开始说起1、Springboot版本2、Springcloud版本3、Springcloud Alibaba4、本次讲解定稿版 第二章 关于Cloud各种组件的停更/升级/替换1、微服务介绍2、SpringCloud是什么&#xff1f;能干吗&#xff1f;产生背景&#xf…

php常用开发框架性能对比

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、框架简介&#xff1f;1.1 webman1.2 CodeIgniter(CI框架)1.3 ThinkPHP1.4 Laravel1.5 EasySwoole 二、压测对比1.机器配置2.webman压测2. ThinkPHP压测3. L…

新闻发布及管理系统

文末附有完整项目代码 在信息飞速传播的时代&#xff0c;新闻发布及管理系统变得愈发重要。本文将详细介绍如何设计并实现这样一个系统。 一、项目背景 随着电脑、智能手机等设备的普及&#xff0c;各种网站应运而生。而信息发布是网络的一大特点&#xff0c;人们上网主要是为…

sklearn-逻辑回归-制作评分卡

目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线&#xff0c;判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中&#xff0c;评分卡是…

Http请求响应——请求

Http概述 Http协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff0c;是一种用于传输网页数据的协议&#xff0c;规定了浏览器和服务器之间进行数据传输的规则&#xff0c;简单说来就是客户端与服务器端数据交互的数据格式。 客户端…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中&#xff0c;我们至少掌握了两种方法&#xff0c;可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现&#xff0c;相关学习链接为&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python opencv 读取图…

封装红黑树实现map和set

本博客需要红黑树和搜索树二叉树的一些知识以及熟悉map和set的相关函数和迭代器&#xff0c;如果读者还不熟悉可以看这三篇博客&#xff1a;红黑树、二叉搜索树、map、set的使用 红黑树的封装 STL30源码分析 如果想到封装&#xff0c;大家应该会直接把RBtree复制两份&#x…

关于使用FastGPT 摸索的QA

近期在通过fastGPT&#xff0c;创建一些基于特定业务场景的、相对复杂的Agent智能体应用。 工作流在AI模型的基础上&#xff0c;可以定义业务逻辑&#xff0c;满足输出对话之外的需求。 在最近3个月来的摸索和实践中&#xff0c;一些基于经验的小问题点&#xff08;自己也常常…