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

Jenkins 持续集成 【CICD】

持续集成 (Continuous integration,简称CI)

持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证,从而尽快地发现集成中的错误。让产品可以快速迭代,同时还能保持高质量。

Jenkins是基于Java开发的持续集成工具,开源免费,官网:https://jenkins.io/

在这里插入图片描述
测试常用的场景: 使用Jenkins实现自动化的持续集成测试,达到无人值守测试的境界。【释放人力 7 *24】

  • 代码提交给Jenkins
  • Jenkins做好定时任务: 持续构建执行
  • 构建完成后把测试报告发送邮箱,查看结果,定位分析问题。
    【allure报告】

一、安装和配置Jenkins【依赖java环境:安装Java环境-JDK】

安装Java环境-JDK

1、电脑安装好jdk,配置环境变量;

  • 在系统变量中添加JAVA_HOME,对应的值是jdk的安装路径 【】
  • 在系统变量path里面,追加%JAVA_HOME%\bin
  • 在命令行模式下,输入:java -version

安装Jenkins

2、【免安装Jenkins】-安装包里面有安装好了所需要的插件+组件,Jenkins默认访问外网的,建议大家使用我的Jenkins免安装版本

  • windows下启动 D:\apache-tomcat-8.5.43\bin 点击 startup.bat
    • jenkins运行时,这个脚本框要一直启动着
  • 访问jenkins地址(本地回环地址)
    • http://localhost:8080/jenkins/http://127.0.0.1:8080/jenkins/

注意:学习的阶段,Jenkins部署在本地的,只能在我的局域网内部访问;
真实的工作中,Jenkins部署在公司的服务器里面,外网访问公司里面,会由开发/运维会提前帮你部署的,不需要你部署的。

  • 登录: 默认用户名:admin
  • 初始密码:
    • C:\Users\Administrator.jenkins\secrets\initialAdminPassword 获取

配置Jenkins

3、Jenkins里配置jdk和git、allure、邮箱等
进入Manage Jenkins -> Configure System:
1)配置系统管理员邮箱地址:
在这里插入图片描述
2)配置Extended E-mail Notification:
常见邮箱服务地址:https://blog.csdn.net/ning521513/article/details/79217203

在这里插入图片描述

这个SMTP服务密码:是一串如下的随机码,请逐字输入:

在这里插入图片描述
3) 以类似的配置配置Email Notification:
在这里插入图片描述
4)点击测试邮件配置是否OK。
在这里插入图片描述

Jenkins在运行中需要使用各种工具环境,包括JDK、Git、Allure等,我们需要在Jenkins所在主机关联配置这些工具。

1、jdk配置:manager Jenkins > Global Tool Configuration >
在这里插入图片描述
2、git的配置: 前提你的系统环境变量里配置好了git环境变量。【path里配置了git的环境变量】
在这里插入图片描述
3、allure的配置:
在这里插入图片描述
注意:如果没有这个配置,需要去安装对应的插件。manager Jenkins >Manger Plugins>可选插件 ,搜索allure 安装即可。
在这里插入图片描述

以上准备工作做好之后,我们可以开始配置Jenkins做自动化项目的持续集成了。
二:Jenkins新建工程
1、新建Item
2、输入一个任务名称 ---- 建议尽量英文/数字形式
3、点击选中 Freestyle project
4、点击【确定】
在这里插入图片描述
此时,jenkins首页已经有了你刚创建的工程 (球是灰色–因为你没有构建过)
每个项目都有自己的工作区,是用来放代码的
在这里插入图片描述
在这里插入图片描述
添加凭据L:确保是gitee上可以登录成功的用户名和密码。
1)类型:Usernamewith password
2)用户名:gitee账户 3)密码:gitee密码
1、xxxx工作空间 —> 配置—>构建—>增加构建步骤
2、选择 Execute Windows batch command

在这里插入图片描述
3、输入命令 :如python main.py 或 python run.py
在这里插入图片描述
构建触发器【实现定时任务】–无人值守测试
xxxx工作空间 —> 配置—>构建触发器
在这里插入图片描述

2、定时构建: 点击日程表 右侧 ?
2、定时构建: 点击日程表 右侧 ?

* * * * *

分钟【0-59】 小时【0-23】 日【1-31】月【1-12】 周【0-7 】
1、每天的晚上八点钟执行代码: 0 20 * * *
2、每月的10号晚上0点执行: 0 0 10 * *、
3、每天晚上的八点10分到15分: 10-15 20 * * *
4、每间隔10分钟: */10 * * * *
5、每间隔1小时: * /1 * * *
6、前三十分钟内每间隔5分钟: 0-30/5 * * * *
7、每天的20,21,23点执行: 0 20,21,23 * * *
8、每周一-周五(工作日期间)间隔4小时执行自动化测试任务:
*/4 * * 1-5

在这里插入图片描述
也可以与其他的任务关联(Build after other projects are built)实际有可能我们运行项目不是一定要定时去执行的,可能开发每次发版我们就需要构建我们的自动化测试脚本,来测试开发的新代码是否存在问题。等到开发的Jenkins任务构建结束之后再开始构建我们的自动化测试任务

添加allure报告

xxxx工作空间 —> 配置—>构建后操作
添加allure report
添加完成后,每次构建完成后,都会生成allure的报告文件。
在这里插入图片描述
在这里插入图片描述
添加后再次构建就会出现allure报告。
在这里插入图片描述

构建后操作 -发送邮件

https://blog.csdn.net/Wjhsmart/article/details/109203361 查询邮箱smtp服务地址

工作空间 —> 配置—>构建后操作 -> Editable Email Notification
在这里插入图片描述
在这里插入图片描述
邮件内容HTML模板: 【直接复制即可】

项目名称:${PROJECT_NAME}<br><hr>
构建编号:${BUILD_NUMBER}<br><hr>
构建状态:${BUILD_STATUS}<br><hr>
触发原因:${CAUSE}<br><hr>
测试报告:<a href="${BUILD_URL}allure/">${BUILD_URL}allure/</a>
<br><hr>
邮件内容HTML模板: 【直接复制即可】
构建日志地址:<a
href="${BUILD_URL}console">${BUILD_URL}console/</a><br><hr>

allure报告定制

参考文章:testingpai.com/article/1595507295429
装饰器: 增强 扩展函数 和方法的功能。类装饰器 方法装饰器 --扩展类和方法的功能。 【测试开发】

1、定制测试用例的标题

# 第二步: pytest测试用例方法
@pytest.mark.p1
@allure.title("{data[用例标题]}") # 使用测试用例的excel的用例
标题描述每一条用例 更直观
@pytest.mark.parametrize("data",all_cases)
def test_cart_case(data): # 调用夹具resp = requests_api(data)expected = data["预期结果"] # 从excel读取预期结果db_assert = data["数据库断言"]response_assert(expected,resp)# 数据库断言database_assert(db_assert)

注意1:但是直接这样做完,这个标题显示格式错乱的。要优化可以如下操作:

  • 1、找到Python目录下: D:\Python39\Lib\sitepackages\allure_pytest\listener.py
  • 2、打开这个文件搜索: test_result.parameters.extend
  • 3、将对应的内容变成: test_result.parameters.extend([])
  • 4、重新运行run文件,生成allure报告。

2、定制测试套件名字

@allure.suite("购物车模块")

3、定制测试步骤

@allure.step("替换占位符变量")

相关文章:

Jenkins 持续集成 【CICD】

持续集成 &#xff08;Continuous integration&#xff0c;简称CI&#xff09; 持续集成是一种开发实践&#xff0c;它倡导团队成员频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、打包、部署、自动化测试&#xff09;来验证&#xff…...

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…...

Vue - 你知道Vue组件之间是如何进行数据传递的吗

难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…...

IP网络对讲广播系统审计

前言 这个系统是前两年在一个内网遇到的&#xff0c;当时顺手试了一个admin登陆之后再没有然后了&#xff0c;最近发现有大佬分享关于这个系统的漏洞&#xff0c;于是就把自己当初看的几个漏洞分享一下&#xff0c;系统比较简单&#xff0c;漏洞点很多&#xff0c;不要做坏事哦…...

蓝桥杯刷题--python38

197. 阶乘分解 - AcWing题库 def init(n): for i in range(2,n1): if not st[i]:primes.append(i) j0 while primes[j]*i<n: st[i*primes[j]]1 if i%primes[j]0: break j1 nint(input(…...

【LeetCode热题100】33. 搜索旋转排序数组(二分)

一.题目要求 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], …...

基于Leaflet.js的Marker闪烁特效的实现-模拟预警

目录 前言 一、闪烁组件 1、关于leaflet-icon-pulse 2、 使用leaflet-icon-pulse 3、方法及参数简介 二、闪烁实例开发 1、创建网页 2、Marker闪烁设置 3、实际效果 三、总结 前言 在一些地质灾害或者应急情况当中&#xff0c;或者热门预测当中。我们需要基于时空位置来…...

Vue-05

v-model 应用于其他表单元素 常见的表单元素都可以用v-model绑定关联 → 快速获取或设置表单元素的值 它会根据控件类型自动选取正确的方法来更新元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name…...

Mongodb中一个小巧的数据更新命令$inc

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第55篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 $inc是一个很小巧的命令。说它小巧&#xff0c;一个是因为短&#xff0c;只有三个字符。另一个是说…...

Java基于SpringBoot+Vue的专家医院预约挂号系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

STM32一个地址未对齐引起的 HardFault 异常

1. 概述 客户在使用 STM32G070 的时候&#xff0c;KEIL MDK 为编译工具&#xff0c;当编译优化选项设置为Level0 的时候&#xff0c;程序会出现 Hard Fault 异常&#xff0c;而当编译优化选项设置为 Level1 的时候&#xff0c;则程序运行正常。表面上看&#xff0c;这似乎是 K…...

spring事务那些事

实际工作中还会面临千奇百怪的问题&#xff0c;看下面返个例子&#xff08;注意MySql数据库测试&#xff09;&#xff1a; //1.hello1Service 调用 hello2Service Transactional(propagation Propagation.REQUIRED,rollbackFor Exception.class) public void doUpdate() {//…...

设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 策略模式与模板方法模式对比解析 文章目录 &#x1f31f;引言&#x1f31f;Part 1:…...

贪婪算法python实现

贪婪算法&#xff08;Greedy Algorithm&#xff09;是一种解决问题的策略&#xff0c;它基于一种贪心的思想&#xff1a;在每一步选择中都采取当前状态下最好或最优的选择&#xff0c;从而希望最终能够得到全局最优解。 其核心思想可以简单概括为“当前局部最优选择”&#xff…...

(一)基于IDEA的JAVA基础12

一维数组 为什么使用数组: 当我们需要存储一系列数据的时候&#xff0c;就需要用到数组&#xff0c;如果不使用数组&#xff0c;我们就要需要一个一个的去声明变量&#xff0c;这样浪费内存空间&#xff0c;同时效率低下。 什么是数组: 数组本身就是一个变量&#xff0c;只…...

vue3中封装table表格

封装实例useTable import {ref } from vue export function useTable(api) {const data = ref([])const refre...

【Redis】Redis的使用

登录redis [roottest2 ~]# redis-cli 127.0.0.1:6379> 或[roottest2 ~]# redis-cli -h 192.168.67.12 -p 6379 192.168.67.12:6379> redis-benchmark 测试工具 redis-benchmark 是官方自带的Redis性能测试工具&#xff0c;可以有效的测试Redis服务的性能 基本的测试语…...

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

在机器学习中&#xff0c;绝大部分模型都需要大量的数据进行训练和学习&#xff08;包括有监督学习和无监督学习&#xff09;&#xff0c;然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务&#xff0c;确实依赖于大规模且多样化的训练数据以…...

鸿蒙内核源码分析 (内存管理篇) | 虚拟内存全景图是怎样的

初始化整个内存 OsSysMemInitOsMainmain从 main() 跟踪可看内存部分初始化是在 OsSysMemInit() 中完成的。 UINT32 OsSysMemInit(VOID) {STATUS_T ret;OsKSpaceInit();//内核空间初始化ret OsKHeapInit(OS_KHEAP_BLOCK_SIZE);// 内核动态内存初始化 512K if (ret ! LOS_OK…...

基于深度学习的电动自行车头盔佩戴检测系统

文章目录 1. 文档说明2. 运行环境说明2.1 硬件配置2.2 软件配置2.3 程序依赖库 3. 基本环境配置3.1 软件安装3.1.1 集成开发环境安装与配置3.1.2 数据库安装与配置3.1.3 编程语言安装3.1.4 CUDA和cuDNN安装与配置3.1.5 机器学习库安装 3.2 依赖库安装 4. 运行程序资源下载地 1.…...

完整B站字幕提取解决方案:三步搞定视频字幕获取与转换

完整B站字幕提取解决方案&#xff1a;三步搞定视频字幕获取与转换 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾经在B站看到精彩的教学视频&#xff0c…...

国标参考文献高效排版解决方案:零门槛工具助你轻松应对学术写作

国标参考文献高效排版解决方案&#xff1a;零门槛工具助你轻松应对学术写作 【免费下载链接】gbt7714-bibtex-style GB/T 7714-2015 BibTeX Style 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style 1. 解决国标排版痛点的3个核心优势 学术写作中&…...

如何用思源宋体CN打造专业级中文字体解决方案?开源字体的技术优势与实战指南

如何用思源宋体CN打造专业级中文字体解决方案&#xff1f;开源字体的技术优势与实战指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字化内容创作中&#xff0c;中文字体的选择…...

国内顶级的SEO技术网站有哪些

国内顶级的SEO技术网站有哪些&#xff1f; 在当今互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为每个网站营销者不可忽视的重要环节。国内顶级的SEO技术网站不仅为业内人士提供了宝贵的技术分享和实践经验&#xff0c;还为企业的网站流量优化提供了有…...

PhotoScan软件在无人机航测数据处理中的高效应用流程

1. 无人机航测数据处理入门指南 第一次接触无人机航测数据处理的同学可能会觉得这是个高大上的技术活&#xff0c;其实只要掌握了PhotoScan这个神器&#xff0c;处理起来比想象中简单得多。我刚开始接触时也走了不少弯路&#xff0c;现在把最实用的经验分享给大家。 PhotoScan是…...

别再盲目调大`--max-memory`!Python服务成本失控的真正元凶藏在这3个被忽略的`__slots__`陷阱里

第一章&#xff1a;Python智能体内存管理策略成本控制策略Python智能体在长期运行、多任务并发或高频率推理场景下&#xff0c;内存使用易呈指数级增长&#xff0c;导致OOM异常与推理延迟上升。有效的内存管理不仅是稳定性保障&#xff0c;更是降低云资源成本的关键杠杆。核心策…...

ClassGraph构建时扫描:Android注解处理的完整解决方案

ClassGraph构建时扫描&#xff1a;Android注解处理的完整解决方案 【免费下载链接】classgraph An uber-fast parallelized Java classpath scanner and module scanner. 项目地址: https://gitcode.com/gh_mirrors/cl/classgraph ClassGraph是一个超高速并行化的Java类…...

基于stm32的公司考勤系统[单片机]-计算机毕业设计源码+LW文档

摘要&#xff1a;本文设计了一款基于STM32单片机的公司考勤系统&#xff0c;详细阐述了其硬件组成和软件算法。该系统利用RFID&#xff08;或指纹识别等&#xff09;技术进行员工身份识别&#xff0c;结合实时时钟模块记录考勤时间&#xff0c;并通过OLED显示屏实时显示考勤信息…...

先被日本汽车打败,再被中国汽车冲击,欧洲车面临崩盘,已累计裁员50万人!

大众汽车在公布2025年的利润腰斩之后&#xff0c;发布了进一步裁员计划&#xff0c;到2030年将削减5万个工作岗位&#xff0c;占它当下员工总人数的比例大约7.5%&#xff0c;由此业界人士统计了近几年来欧洲诸多车企以及汽车供应链企业宣布的裁员人数&#xff0c;发现欧洲汽车行…...

镜像视界|AI空间计算重塑公安实战:从“找人”到“锁人”的智能体革命——基于Pixel-to-Space、MatrixFusion与三维轨迹建模的空间级无感定位系统

&#x1f4d8; 镜像视界&#xff5c;AI空间计算重塑公安实战&#xff1a;从“找人”到“锁人”的智能体革命 ——基于Pixel-to-Space、MatrixFusion与三维轨迹建模的空间级无感定位系统 一、实战痛点&#xff1a;为什么公安仍停留在“找人阶段” 在当前公安实战中&#xff0c…...