持续集成 在 Linux 上搭建 Jenkins,自动构建接口测试

本篇把从 0 开始搭建 Jenkins 的过程分享给大家,希望对小伙伴们有所帮助。

文章目录

  • 在 Linux 上安装 Jenkins
  • 在 Linux 上安装 Git
  • 在 Linux 上安装 Python
  • 在 Linux 上安装 Allure
  • 配置 Jenkins
  • jenkins 赋能 - 使用邮箱发送测试报告
  • jenkins 赋能 - 优化测试报告内容

Tips:在搭建过程中,我参考了网上很多资料,在众多虚虚实实的资料中不断地实践,最终搭建成功了。最想分享给各位的一个观点就是,尤其要注意版本依赖问题,Linux 版本、jdk 版本、Jenkins 版本等等,其次就是不同版本的配置文件内容也不一定相同,伙伴们一定要注意。在以下内容中,我也会尽可能的标明我使用的具体版本,希望可以助力有需要的小伙伴们。

在 Linux 上安装 Jenkins

我是在双十一的时候参加阿里云服务器购买活动时买的服务器,相信很多伙伴对这个活动都不陌生,因为微信公众号中很多博主都有做推广,刚好我用在这个地方。我服务器操作系统版本是CentOS 8.2 64 位,并且我使用了宝塔服务器运维面板,后续往服务器上上传安装包会经常用到它。

Jenkins 依赖 Java 环境,所以第一步是安装 jdk。
1.1.下载jdk11,因为最新版 Jenkins 已经不支持 jdk8。jdk 下载链接
我选择的是jdk-11.0.17

1.2.在 Linux 中创建 jdk 安装目录,我习惯把用到的东西安装在/usr/local 下面,方便管理。
# mkdir /usr/local/java

1.3.进入到创建好的 java 目录中,使用宝塔将下载好的 jdk11 上传上去。

 

1.4.解压压缩包。
# tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz

1.5.配置环境变量。
1.5.1 编辑 profile 文件。
# vim /etc/profile
追加如下内容:
export JAVA_HOME=/usr/local/java/jdk-11.0.17
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

注意:这里的 CLASSPATH 如果是 jdk11,则写成"export CLASSPATH=$JAVA_HOME/lib",如果是 jdk8,则写成"CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"。
记得保存后退出。:wq
1.5.2 重新加载配置文件 - 是配置立马生效。
# source /etc/profile
1.5.3 验证。
# java -version

第二步,安装 maven
我查找到的资料大部分表示 maven 也是 jenkins 的依赖项,具体原因我不太了解,以后有机会了解后再和大家分享,目前我们就只管安装就好了。
2.1 下载 maven 的 tar.gz 安装包,我选择的是 3.6.3 版本,maven3.6.3 版本下载链接

2.2 创建 maven 目录
# mkdir /usr/local/maven

2.3 将下载后的安装包上传至 maven 目录

2.4 解压缩
# tar -zxvf apache-maven-3.6.3-bin.tar.gz

 

2.5 配置环境变量
# vim /etc/profile
在文件底部追加如下内容:
export M2_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin

 保存后退出。

2.6 使配置文件生效
# source /etc/profile

2.7 验证是否安装成功
# mvn -v

 

第三步,安装 Jenkins
3.1 下载 Jenkins 的 rpm 包。jenkins rpm 包下载地址
我选择的是jenkins-2.346-1.1.noarch.rpm 2022-05-03 20:45 87M

3.2 在 Linux 中创建 jenkins 目录
# mkdir /usr/local/jenkins

3.3 进入到创建好的 jenkins 目录中,使用宝塔将下载好的 rpm 包上传上去。

3.4 解压。
# rpm -ivh jenkins-2.346-1.1.noarch.rpm

3.5 配置 jenkins 中的 java 路径。
3.5.1 先查看 java 的绝对路径
# which java

把路径复制一下。
3.5.2 修改/etc/init.d/jenkins 文件 ,配置 jdk 安装路径。
# vim /etc/init.d/jenkins
找到"candidates",将默认的/usr/bin/java 改成刚刚复制的 java 命令的绝对路径。 

保存并退出。
3.5.3 修改/etc/sysconfig/jenkins 文件。
将 JENKINS_USER="jenkins"改成 JENKINS_USER="root";
将 JENKINS_PORT="8080"改成 JENKINS_PORT="8772";不必非改成 8772,只要是端口号不冲突就行。
保存并退出。
3.5.4 重新加载配置文件。
# systemctl daemon-reload

3.6 启动 jenkins 服务
# systemctl start jenkins

3.7 查看 jenkins 服务状态
# service jenkins status
如果一切顺利的话,你会看到:

奈何事事怎么都会这么顺利,我在安装 jenkins 时卸载重装了不下 10 次,如果你在启动服务是也遇到了异常,那么你一定需要卸载 jenkins 的命令,然后在仔细的重新安装配置一遍。我为你准备好了 jenkins 卸载命令:
# rpm -e jenkins -- rpm 卸载
# rpm -ql jenkins --检查是否卸载成功
# find / -iname jenkins | xargs -n 1000 rm -rf --彻底删除残留文件

如果一切顺利的话这个时候你用浏览器输入 Linux 的 ip 地址加上刚刚的端口号应该就能访问到 jenkins 的界面了。

如果你像我一样,Linux 服务启动成功了,但是使用浏览器访问不到 jenkins 界面,那你可以考虑下是不是防火墙的问题。

3.8 把端口号加入到防火墙。
根据自己设置的端口号,运行如下命令:
# firewall-cmd --zone=public --add-port=8772/tcp --permanent
# firewall-cmd --reload

如果你像我一样,配置完防火墙后仍然访问不到 jenkins 的界面,那你可以考虑是不是没有配置服务器的安全组。
3.9 配置服务器的安全组。
3.9.1 在阿里云服务器的控制台中,点击"网络与安全"下的"安全组"。

3.9.2 点击安全组列表下的名称。
3.9.3 把自己设置的端口添加在"入方向"下;

 

这个时候我就能成功访问 jenkins 了,不知道你成功了没,如果你还没成功,那就在留言板描述出你的问题,大家讨论一下吧。

在 Linux 上安装 Git

安装 git 有两种方式,可以使用"yum -y install git"命令在线安装,也可以选择下载安装包离线安装,经过实践后我推荐使用离线安装方式,因为我起初为了方便使用在线安装后,发现后续 jenkins 配置 git 时总是无法连接远程仓库,然后我卸载 git 后选择离线安装,就没有 jenkins 配置 git 出错的问题了。
1.下载 git 的 tar.gz 包。git 的 tar.gz 包的下载地址
我选择的是v2.39.0 版本

2.在服务器/usr/local 下创建 git 目录。
# mkdir /usr/local/git

3.将安装包上传到 git 文件夹。

 

4.解压缩。
# tar -zxvf git-2.39.0.tar.gz

5.安装依赖(中途出现提示就输入:y)。
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

6.编译源码。
# make prefix=/usr/local/git all

7.安装 git 至/usr/local。
# make prefix=/usr/local/git install

8.配置环境变量。
# vim /etc/profile
在最后添加:export PATH=$PATH:/usr/local/git/bin

9.配置文件立即生效。
# source /etc/profile

10.验证是否安装成功。
# git --version

 在 Linux 上安装 Python

1.下载 Python 的.tgz 安装包,Python 的.tgz 安装包链接
我选择的是Python-3.11.1.tgz

2.在 Linux 上创建 Python 文件夹
注意,这不是最终 Python 的安装目录,后续我们会在这个目录下再创建一个 Python 的安装目录,如果迷糊的伙伴请继续往下看。
为了更清楚的展示安装步骤,我将运行命令的所处位置也展示给大家,希望大家不会迷糊。
[root@XyServerHostName ~]# mkdir /usr/local/python

3.进入创建好的文件夹,上传下载好的 Python 安装包

4.解压
[root@XyServerHostName python]# tar -zxvf Python-3.11.1.tgz
解压之后,会在当前目录下 (/usr/local/python) 多出来一个安装包解压后的目录 (/usr/local/python/Python-3.11.1)。

 

5.创建 Python 的安装目录
[root@XyServerHostName python]# mkdir python3.11.1

 

6.进入到 Python 安装包解压后的目录,然后正式安装 Python
[root@XyServerHostName ~]# cd /usr/local/python/Python-3.11.1/
[root@XyServerHostName Python-3.11.1]# ./configure --prefix=/usr/local/python/python3.11.1/
注意:--prefix 是指定安装目录,指向刚刚创建的安装目录 python3.11.1

7.编译
[root@XyServerHostName Python-3.11.1]# make && make install
这个过程会等待一段时间,我大概等待了 3 分钟。

8.配置环境变量
[root@XyServerHostName Python-3.11.1]# vim /etc/profile
在最后追加如下内容:
export PYTHON_HOME=/usr/local/python/python3.11.1
export PATH=${PYTHON_HOME}/bin:$PATH

 

使配置文件生效:
[root@XyServerHostName Python-3.11.1]# source /etc/profile
验证是否安装成功:
[root@XyServerHostName Python-3.11.1]# python3 -V
注意:是大写字母 V

 

9.修改 Linux 默认的 Python 版本
9.1 查看 Linux 上 Python 的默认版本:
# cd /usr/bin
# ll

 

9.2 删除软连接
[root@XyServerHostName bin]# rm -rf python

9.3 重新创建软连接
[root@XyServerHostName bin]# ln -s /usr/local/python/python3.11.1/bin/python3.11 /usr/bin/python

9.4 验证

 

至此在 Linux 上安装 Python 的步骤就演示完了,因为我在安装的时候有点绕,所以这一部分写的就比较啰嗦,希望小伙伴们可以顺利安装。

在 Linux 上安装 Allure 

 

1.下载 allure 的.tgz 安装包。我选择的是 v2.20.1 版本,allure-2.20.1.tgz 下载链接

2.在 Linux 上创建 allure 目录
# mkdir /usr/local/allure

3.进入到 allure 文件夹,上传下载好的安装包

4.解压缩
[root@XyServerHostName allure]# tar -zxvf allure-2.20.1.tgz

5.配置环境变量
[root@XyServerHostName allure]# vim /etc/profile
在文件底部添加:export PATH=$PATH:/usr/local/allure/allure-2.20.1/bin

保存并退出。

6.使配置文件立刻生效
[root@XyServerHostName allure]# source /etc/profile

7.验证是否安装成功
[root@XyServerHostName ~]# allure --version

在 jenkins 上配置工程 

 到此为止,我们已经成功在 Linux 上安装并配置好了所有配置 jenkins 工程的所需项,接下来就让我们开始配置 jenkins 工程吧。(如下内容并不是一蹴而就的,需要经过几轮配置的调整,这也是我从 0 到 1 搭建的心路历程,相信看完后会对你有所帮助)
1.初次登录并配置 jenkins
使用浏览器拼接 jenkins 地址:ip 地址:jenkins 端口号
首次进入后会有一些基础配置,操作很简单,根据提示一步一步进行就好了,在此我就选三处加以说明:
1.1 首次进入后,根据提示获取密码,将文件内容复制到输入框中点击"继续"。

1.2 可以根据需要创建登录用户,我选择使用 admin 登录。

1.3 在插件管理页面,我选择的是"安装推荐的插件"

2.创建工程
2.1 点击"新建 Item"按钮

 

2.2 填写工程名称、选择自由主题、点击确定

 

2.3 工程配置-General-填写描述

 

2.4 工程配置 - 源码管理 - 源码管理选择 git,填写 git 地址

 

2.5 工程配置 - 构建触发器

 

2.6 工程配置 - 构建

 

 

完成后点击保存。

3.安装插件
入口:

在"可选插件"tab 页中搜索插件-allure,然后选择插件后点击安装。

 

安装完所有需要用的插件后手动重启 jenkins 服务。
在端口号后面输入/restart,然后确定即可。

 

4.配置 jdk、git、allure
入口:

 

4.1 配置 jdk

 

4.2 配置 git

 

注意:如果"Path to Git executable"一栏写错,在工程配置的源码管理里会提示无法连接仓库错误。
(下面这张截图是如果"Path to Git executable"配置错误,在工程配置的源码管理里会提示无法连接仓库错误的错误示范)

 

4.3 配置 allure

 

注意:这里的安装目录就是 aller 的安装目录路径,不是 which allure 后显示的路径。

 

5.配置 allure 报告展示 (小心:这一步有坑)
5.1 回到工程配置,在"构建后操作"中选择"Allure Report"。
5.2 在 Path 一栏写入"./report"。
提示:坑就是这个 Path 的写法,别急,往后看。

6.立即构建,提示:"pytest:command not found"

解决办法:找到 pytest 安装目录所在位置,在 bin 目录下添加 pytest 软链接。

 

问题解决!

7.再次构建,pytest 执行成功,但提示:"allure-results does not exist"

查看 allure 测试报告,报告也是空的。

 

再次回到工程配置中的"构建后操作",(有道翻译了一下提示语,英语实在是硬伤呀,看来得背点单词了 。。)

 

根据提示,path 中需要写入的 allure 报告目录是相对于工作空间的相对路径。
可工作空间又是啥?工作空间在哪呢?后来我发现可以在构建历史的控制台输出中看到。

 

观察发现,如果工作空间是/var/lib/jenkins/workspace/pytest_requests_allure_v1,那么在工程配置中-"构建后操作"-"Allure Report"中的"Path"一栏直接填写"report"就行了。
注意,不是./report,也不是/var/lib/jenkins/workspace/pytest_requests_allure_v1/report。

将原先"Allure Report"中"Path"填写的"./report"改成"report"。

注意:"Allure Report"中"高级"里面的内容不需要修改。

 

 

至于工程配置中"构建"一栏中的命令中的测试报告路径写./report 或者直结写 report,都不影响成功构建。

 

具体原因不清楚,总之是我实践后得到的结论。

8.再次构建,哇,终于成功了!
(为了方便调试,所以我每次运行只选择了 4 条 case)

以上就是我在服务器的 Linux 操作系统中搭建 jenkins 的一系列过程。文章中你觉着啰嗦的地方就是我当时头最大的地方,写的详细点只希望小伙伴们在实践过程中顺利一些。喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言刷题(6)(猜名次)——“C”

各位CSDN的uu们你们好呀,今天,小雅兰还是在复习噢,今天来给大家介绍一个有意思的题目 题目名称: 猜名次 题目内容: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A选…

测试管理之路 —— 如何优化测试计划以提高测试覆盖率

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

Github的使用

Github Date: March 8, 2023 Sum: Github的使用 Github 了解开源相关的概念 1. 什么是开源 2. 什么是开源许可协议 开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议( Open Sou…

node多版本控制

前言 最近在折腾Python,并将node升级至v18.14.2。突然发现一个旧项目无法运行,也无法打包,里面的node-sass报错,显然这是因为node版本过高导致的。 将node版本降低至以前的v14.16.0,果然立马就能正常运行。 存在不同…

mysql-日志备份

1.binlog 用于数据恢复, 用于数据复制。 mysql> show variables like %log_bin%; -------------------------------------------------------------- | Variable_name | Value | ----------------------------------…

前端代码复用学习笔记:整洁架构与清晰架构

基础代码的复用往往比较简单,但是业务代码的复用通常是困难的,如果没有特殊的手段去治理项目会逐渐发展为难以维护的巨石应用,按照维基百科记载,代码的复用形式主要有三种,程序库,应用框架,设计…

【无标题】 6UVPX 总线架构的高性能实时信号处理

VPX630 是一款基于 6U VPX 总线架构的高速信号处理平台,该平台采用一片 Xilinx 的 Kintex UltraScale 系列 FPGA(XCKU115)作为主处理器,完成复杂的数据采集、回放以及实时信号处理算法。 采用一片带有 ARM内核的高性能嵌入式处理…

GeoServer发布一张纯图片作为地图教程

从事GIS行业的小伙伴们可能会有这样的需求,就是客户给了一张纯图片。可能是一张手工绘图,也可能是一张影像图片,总归来说就是png,jpeg格式的纯图片,现在需要把这张图片加载到我们的地图上,该如何做呢?本文带你从0开始操作一遍。 首先我先准备好测试数据,是一张jpg格式…

LeetCode刷题——贪心法(C/C++)

这里写目录标题[中等]买卖股票的最佳时机 II[中等]移掉k位数字[中等]跳跃游戏[中等]跳跃游戏 II[中等]加油站[中等]划分字母区间[中等]无重叠区间[中等]用最少数量的箭引爆气球[中等]买卖股票的最佳时机 II 原题链接题解 最简单的思路,效率不高,只要明天…

基于 pytorch 的手写 transformer + tokenizer

先放出 transformer 的整体结构图,以便复习,接下来就一个模块一个模块的实现它。 1. Embedding Embedding 部分主要由两部分组成,即 Input Embedding 和 Positional Encoding,位置编码记录了每一个词出现的位置。通过加入位置编码可以提高模型的准确率,因为同一个词出现在…

Web3中文|政策影响下的新加坡Web3步伐喜忧参半

如果说“亚洲四小龙”是新加坡曾经的荣耀,那么当时代进入21世纪的第二个十年,用新加坡经济协会(SEE)副主席、新加坡新跃社科大学教授李国权的话来说,新加坡现在的“荣耀”是全球金融的主要“节点”或区块链行业发展的关…

单片机能运行操作系统吗?

先直接上答案:可以!但是操作系统不是刚需,上操作系统比较占用单片机的资源,比如占用比较多的FLASH和RAM,间接增加了硬件成本,哪怕成本增加1毛钱,对于上量的产品,分分钟是一个工程师的…

【ChatGPT】论文阅读神器 SciSpace 注册与测试

【ChatGPT】论文阅读神器 SciSpace 注册与测试1. 【SciSpace】网址与用户注册1.1 官网地址:[【SciSpace官网】https://typeset.io](https://typeset.io)1.2 官网注册2. 【SciSpace】实战解说2.1 导入论文2.2 论文分析2.3 中文分析2.4 论文分析进阶2.5 公式表格分析3…

没有关系的话,那就去建立关系吧

今天给大家分享一道链表的好题--链表的深度拷贝,学会这道题,你的链表就可以达到优秀的水平了。力扣 先来理解一下题目意思,即建立一个新的单向链表,里面每个结点的值与对应的原链表相同,并且random指针也要指向新链表中…

Maven聚合开发【实例详解---5555字】

目录 一、Maven聚合开发_继承关系 二、Maven聚合案例 1. 搭建dao模块 2. 搭建service模块 3. 搭建web模块 4. 运行项目 一、Maven聚合开发_继承关系 Maven中的继承是针对于父工程和子工程。父工程定义的依赖和插件子工程可以直接使用。注意父工程类型一定为POM类型工程…

vue的diff算法?

文章目录是什么比较方式原理分析Diff算法的步骤:首尾指针法比对顺序:是什么 diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较…

2023年网络安全趋势

数据安全越来越重要。 我国《数据安全法》提出“建立健全数据安全治理体系”,各地区部门均在探索和简历数据分类分级、重要数据识别与重点保护制度。 数据安全治理不仅是一系列技术应用或产品,更是包括组织构建、规范制定、技术支撑等要素共同完成数据…

【FPGA-Spirit_V2】小精灵V2开发板初使用

🎉欢迎来到FPGA专栏~小精灵V2开发板初使用 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家…

Kaggle实战入门:泰坦尼克号生生还预测

Kaggle实战入门:泰坦尼克号生生还预测1. 加载数据2. 特征工程3. 模型训练4. 模型部署泰坦尼克号(Titanic),又称铁达尼号,是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉&#xff…

Spring-Kafka 发送消息的两种写法

文章目录前言写法一:发送的消息对象是字符串1 创建项目2 项目结构3 application.yml 配置文件4 生产者 KafkaProducerComponent5 消费者 KafkaConsumerComponent6 控制器(GET请求发送消息)7 启动类8 测试效果写法二:发送复杂消息对…