如何搭建 Jenkins 自动化测试平台?

news2024/11/20 9:41:32

前言

在进行平台搭建前,我们首先要问自己:我需要搭建的平台的功能是什么,要实现什么目标?

在我的理解中,自动化构建平台的执行流程(目标)是:

  • 我们将代码提交到代码托管工具上,如github、gitlab、gitee等。
  • Jenkins要能够检测到我们的提交。
  • Jenkins检测到提交后,要自动拉取代码,运行测试,并进行构建、打包。
  • Jenkins执行完测试和构建后,要向相关人员发送构建结果。
  • Jenkins要能够向我们展示测试运行的分析。

其实还可以加上自动化部署——把成功的构建添加到web 容器。

自动化测试搭建

有了大致的目标,就可以一步步实现了。

代码仓库搭建

常用的代码托管平台有GitHub、Gitlab、Gitee等。我选择了Gitlab。

Gitlab可以托管在Gitlab的网站上,也可以建立本地的Gitlab仓库。

为了访问更稳定,我选择了在自己的阿里云服务器上搭建gitlab仓库。

步骤:

  1. 服务器安装Gitlab。可以通过宝塔安装,也可以自己手动安装。安装后开放相应的端口,就可以访问到Gitlab了。

  2. 创建账号,登录,创建一个项目

为了让我们能够向该项目提交代码,需要进行ssh认证。将本地主机的SSH公钥添加到远程项目里。此外,如果远程项目是私有的,那还要添加可访问的用户群组。

Jenkins 安装

下载Jenkins的war包,放在Tomcat的webapps路径下,然后重启Tomcat。

开放相应的端口,然后就可以访问到了。

Jenkins首次启动时,会生成一个管理员账号和密码,一定要记得。

Jenkins 插件安装

下面的配置过程中会使用到很多插件,在这里列出。配置时不再说明。

Git 、GitLab 、Email Extension 、Allure Jenkins Plugin、Maven Integration plugin

可参考博客:[Jenkins插件大全及用途简介]((19条消息) Jenkins插件大全及用途简介_pansaky的博客-CSDN博客_jenkins插件)

Jenkins配置maven
安装maven

在系统管理-->全局工具配置中添加maven,如果服务器上已经安装了maven,那么指定MAVEN_HOME。

如果没有安装,那么可以选择版本,让Jenkins自己安装。

  1. 下载maven插件

    在系统管理-->插件管理中,搜索、安装 Maven Integration plugin 。

  2. 建立一个maven任务

Jenkins 关联代码仓库

在上面建立的maven任务的:配置-->源码管理 中添加代码仓库。

这里,需要进行认证,添加Credentials:

输入用户名、密码即可。然后选择刚才添加的Credential。

这样,我们就将Jenkins关联到了代码仓库上。Jenkins就能够从该代码仓库上面拉取代码了。

Gitlab 提交触发 Jenkins 自动构建
  1. 配置Jenkins触发器

    在配置-->构建触发器 中,选中 Build when a change is pushed to GitLab. GitLab webhook URL:***

    该URL在配置Gitlab钩子时要用到。

继续,在构建触发器-->高级 中,点击generate,生成一个secret token。

该token也在配置web hook 时要使用。

配置完成后,点击应用、保存。

配置Gitlab web hook

什么是web hook?他就像一个鱼钩一样,当有🐟到了,就拉一下。

我们可以配置一个URL,当Gitlab检测到事件时(如:有新的提交时),就会向配置的URL发送消息。

钓鱼佬,别睡了,有鱼上钩了!

链接中输入Jenkins触发器那里的链接,私密授权码输入secret token。

配置完钩子后,测试一下。返回HTTP 200,就算成功了。

配置Build

上面的配置完成了提交代码的自动下拉,但是怎么构建呢,还需要配置Build:

由于使用的maven来进行构建,所以root pom要使用maven项目的pom文件。

下面的Goals and options是构建时还要执行的指令,我们希望每一次构建都运行一下测试,因此填入test指令。

这和我们在本地执行maven test指令差不多。

测试一下我们现在就完成了gitlab提交后的自动构建,来测试一下:

向gitlab仓库提交一个测试代码,如果成功,应该能够看到构建被触发了:(我使用的是执行过的例子)

然后可以看到构建的控制台输出:

这就代表我们的自动构建功能实现了。

生成测试报告

我使用了Allure来生成测试报告。

安装Allure Commandline

我们使用了Allure的项目测试后,会生成一个allure results文件,该文件里面记录了测试信息。

Allure Commandline 的功能,就是解析这些信息,然后生成一个可视化的网页界面。

和maven安装类似,可以指定本地的,也可以让Jenkins自己安装。

配置构建后操作

Jenkins 使用maven构建后,要实现测试结果可视化,还要配置Allure来收集测试信息。

添加一个Allure Report的构建后操作即可,Path中填写的是Allure生成的可视化页面的位置。

测试

添加了Allure后,执行测试就可以看到可视化的测试报告了。

注意,要使的Allure生效,我们的maven项目中,要添加Allure的插件。这样才能在测试时收集测试信息。

下面是一个可运行的pom:

 
  1. <properties>

  2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  3. <maven.compiler.target>1.8</maven.compiler.target>

  4. <maven.compiler.source>1.8</maven.compiler.source>

  5. <junit.version>5.7.1</junit.version>

  6. <aspectj.version>1.8.10</aspectj.version>

  7. </properties>

  8. <dependencies>

  9. <dependency>

  10. <groupId>javax.servlet</groupId>

  11. <artifactId>javax.servlet-api</artifactId>

  12. <version>4.0.1</version>

  13. <scope>provided</scope>

  14. </dependency>

  15. <dependency>

  16. <groupId>org.junit.jupiter</groupId>

  17. <artifactId>junit-jupiter-api</artifactId>

  18. <version>${junit.version}</version>

  19. <scope>test</scope>

  20. </dependency>

  21. <!-- allure-->

  22. <dependency>

  23. <groupId>io.qameta.allure</groupId>

  24. <artifactId>allure-junit5</artifactId>

  25. <version>RELEASE</version>

  26. <scope>test</scope>

  27. </dependency>

  28. <dependency>

  29. <groupId>org.junit.jupiter</groupId>

  30. <artifactId>junit-jupiter-engine</artifactId>

  31. <version>${junit.version}</version>

  32. <scope>test</scope>

  33. </dependency>

  34. </dependencies>

  35. <build>

  36. <plugins>

  37. <plugin>

  38. <groupId>org.apache.maven.plugins</groupId>

  39. <artifactId>maven-war-plugin</artifactId>

  40. <version>3.3.1</version>

  41. </plugin>

  42. <plugin>

  43. <artifactId>maven-surefire-plugin</artifactId>

  44. <version>2.22.1</version>

  45. <configuration>

  46. <testFailureIgnore>false</testFailureIgnore>

  47. <argLine>

  48. -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"

  49. </argLine>

  50. <systemProperties>

  51. <property>

  52. <name>junit.jupiter.extensions.autodetection.enabled</name>

  53. <value>true</value>

  54. </property>

  55. </systemProperties>

  56. </configuration>

  57. <dependencies>

  58. <dependency>

  59. <groupId>org.junit.platform</groupId>

  60. <artifactId>junit-platform-surefire-provider</artifactId>

  61. <version>1.2.0</version>

  62. </dependency>

  63. <dependency>

  64. <groupId>org.aspectj</groupId>

  65. <artifactId>aspectjweaver</artifactId>

  66. <version>${aspectj.version}</version>

  67. </dependency>

  68. </dependencies>

  69. </plugin>

  70. <plugin>

  71. <groupId>io.qameta.allure</groupId>

  72. <artifactId>allure-maven</artifactId>

  73. <version>2.10.0</version>

  74. <configuration>

  75. <reportVersion>2.4.1</reportVersion>

  76. </configuration>

  77. </plugin>

  78. </plugins>

  79. </build>

push 该使用了Allure的项目,构建后会生成Allure Report文件:

点击查看Allure Report文件:

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1500496.html

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

相关文章

Linux 关于NTP同步硬件时钟的可靠性验证

Linux关于NTP同步硬件时钟的可靠性验证 1. 常见的时钟类型1.1 系统时钟1.2 硬件时钟 2. 常见时钟同步方式2.1 ntpd服务2.1.1 推荐配置/etc/ntp.conf2.1.2 推荐配置/etc/sysconfig/ntpd 2.2 定时任务ntpdate2.3 ntp命令同步状态相关命令解读2.3.1 ntpq -pn解读2.3.2 ntpdate -u解…

【牛客】VL74 异步复位同步释放

描述 题目描述&#xff1a; 请使用异步复位同步释放来将输入数据a存储到寄存器中&#xff0c;并画图说明异步复位同步释放的机制原理 信号示意图&#xff1a; clk为时钟 rst_n为低电平复位 d信号输入 dout信号输出 波形示意图&#xff1a; 输入描述&#xff1a; clk为时…

STM32 SDRAM知识点

1.SDRAM和SRAM的区别 SRAM不需要刷新电路即能保存它内部存储的数据。而SDRAM&#xff08;Dynamic Random Access Memory&#xff09;每隔一段时间&#xff0c;要刷新充电一次&#xff0c;否则内部的数据即会消失&#xff0c;因此SRAM具有较高的性能&#xff0c;但是SRAM也有它…

外贸常用的出口认证 | 全球外贸数据服务平台 | 箱讯科技

出口认证是一种贸易信任背书&#xff0c;对许多外贸从业者而言,产品的出口认证和当前的国际贸易环境一样复杂多变&#xff0c;不同的目标市场、不同的产品类别,所需要的认证及标准也不同。 国际认证 01 IECEE-CB IECEE-CB体系的中文含义是“关于电工产品测试证书的相互认可体…

【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点

文章目录 题目思路解答 题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…

QT中的信号和槽

信号和槽概述 在 Qt 中&#xff0c;用户和控件的每次交互过程称为⼀个事件。比如 “用户点击按钮” 是⼀个事件&#xff0c;“用户关闭窗口” 也是⼀个事件。每个事件都会发出⼀个信号&#xff0c;例如用户点击按钮会发出 “按钮被点击” 的信号&#xff0c;用户关闭窗口会发出…

社区店选址评估的关键指标:确保商业成功的重要因素

对于想开实体店或创业的人来说&#xff0c;选址是决定商业成功的关键因素之一。作为一名开鲜奶吧5年的创业者&#xff0c;我在网上持续分享开店的干货和见解。 在这篇文章中&#xff0c;我将详细介绍社区店选址评估的关键指标&#xff0c;帮助你确保商业成功。 1、人流量&…

深度解析Broker的角色与魔法

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深度解析Broker的角色与魔法 前言Broker的基本概念Kafka Broker 的定义&#xff1a;Kafka Broker 的基本原理&#xff1a;为何 Broker 是 Kafka 消息传递的核心组成部分&#xff1a; 创建于配置Broker…

备份 ChatGPT 的聊天纪录

备份 ChatGPT 的聊天纪录 ChatGPT 在前阵子发生了不少次对话纪录消失的情况&#xff0c;让许多用户觉得困扰不已&#xff0c;也担心自己想留存的聊天记录消失不见。 好消息是&#xff0c;OpenAI 在 2023 年 4 月 11 日推出了 ChatGPT 聊天记录备份功能&#xff0c;无论是免费…

双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的技术应用

原文链接&#xff1a;双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践技术应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&tempkeyMTI2MF9DVWNrMFpvV1d3RGxBZUE2QXJBRnI1NEJkcVhzRFZwakRqYXhhVFQzQnh1MVhJcy1laWh6N…

Python实习生(自动化测试脚本开发) - 面经 - TCL新技术有限公司

JD&#xff1a; 招聘流程&#xff1a; 2024.1.3 Boss直聘 沟通 2024.1.4 约面 2024.1.6 上午面试 面试流程&#xff1a; 上来第一步&#xff0c;直接问Python基础语法&#xff0c;讲一下基础的数据类型 就记得元组和字典 分别具体说一下元组和字典 流程控制语句有哪些&…

Linux:线程控制和原生线程库

文章目录 线程的id和LWP线程的终止线程的返回值问题关于原生线程库问题 本篇总结的内容主要是关于线程的控制专题 线程的id和LWP 对于获取线程的id来说&#xff0c;在Linux系统中存在这样的调用 这个调用就可以获取返回当前线程的id 先写出下面的实例代码 #include <ios…

垃圾收集器底层算法

垃圾收集器底层算法 三色标记 在并发标记的过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;对象间的引用可能发生变化&#xff0c;多标和漏标的情况就有可能发生&#xff0c;这里我们引入“三色标记”来给大家解释下把Gcroots可达性分析遍历对象过程中遇到对象…

这些养老难题,只能靠AI来解决了

3 月 5 日刚召开的两会&#xff0c;AI 这个话题妥妥站上了 C 位。不仅政府工作报告首次提出要开展“人工智能”行动&#xff0c;各路科技大佬和人大代表也是围绕着 AI 大模型的技术创新、应用落地和政策法规&#xff0c;展开了热烈积极的建言献策。甚至有互联网大佬建议将人工智…

OKLink2月安全月报| 2起典型漏洞攻击案例分析

在本月初我们发布的2024年2月安全月报中提到&#xff0c;2月全网累计造成损失约1.03亿美元。其中钓鱼诈骗事件损失占比11.76%。 OKLink提醒大家&#xff0c;在参与Web3项目时&#xff0c;应当仔细调研项目的真实性、可靠性&#xff0c;提升对钓鱼网站和风险项目的甄别能力&…

ArcGIS筛选工具:19段SQL示例代码,所有需求一网打尽

一、使用方法 筛选工具(Select_analysis)主要用于从输入要素类或输入要素图层中提取要素&#xff08;通常使用选择或结构化查询语言 (SQL) 表达式&#xff09;&#xff0c;并将其存储于输出要素类中。 以三调图斑为例&#xff0c;图斑中有一个【DLMC】字段&#xff0c;该字段…

MAC测试环境搭建

1 下载pycharm 下载地址&#xff1a;PyCharm&#xff1a;JetBrains 出品的用于数据科学和 Web 开发的 Python IDE 2 安装python3.6.8 下载地址&#xff1a;Index of /ftp/python/3.6.8/ 安装后提示错误 换一种方式&#xff1a;用conda 下载地址&#xff1a;Free Download | …

爬虫入门到精通_框架篇15(Scrapy框架安装)

1 Scrapy安装 Scrapy的安装有多种方式&#xff0c;它支持Python2.7版本及以上或Python3.3版本及以上。下面说明Python3环境下的安装。 Scrapy依赖的库比较多&#xff0c;至少需要依赖库有Twisted14.0,lxml 3.4,pyOpenSSL 0.14。而在不同平台环境又各不相同&#xff0c;所以在安…

警用移动执法远程视频监控方案:安防视频监控系统EasyCVR+4G/5G移动执法仪

一、背景需求 在现代城市管理中&#xff0c;移动执法仪视频监控方案正逐渐成为一种高效、便捷的管理工具。该方案通过结合移动执法仪和视频监控技术&#xff0c;实现了对城市管理现场的实时监控和取证&#xff0c;有效提升了城市管理水平和效率。 移动执法仪作为现场执法的重…

Sora的双重边缘:视频生成的革新与就业的再思考

随着科技的日新月异&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术如潮水般涌入我们的日常生活&#xff0c;为各个领域带来了翻天覆地的变化。在这一浪潮中&#xff0c;Sora作为一款前沿的AI视频生成工具&#xff0c;凭借其高度逼真…