目录

持续集成实战-Jenkins自动化测试环境搭建

持续集成实战 —— Jenkins自动化测试环境搭建

🔥 交流讨论:

🔥 资源分享

🔥 教程推荐:

📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

1.目的

在日常的项目测试过程中,搭建与维护测试环境是广大测试同学的一个基础技能,相信也很少会有公司完全不让测试去碰自己的测试环境。那么工作中大量的创建、部署、管理、维护等一系列的重复操作就成为了整个测试项目中一个巨大的工作量。

面对这样一种普遍的情况,Jenkins作为持续集成的良好解决方案就可以很好的解决以上的这些问题。对于一些重复的搭建部署操作都可以通过Jenkins来进行自动化完成,无需任何人工干预,有利于减少重复过程以节省时间、费用和工作量,让测试同学腾出更多的时间与精力来关注并着眼于其他的重要测试环节。

2.说明

1.此笔记的中所使用的操作系统为CentOS7.9,笔记中所涉及的软件版本有可能会因为时间的推移而导致不匹配或其他额外的操作,请大家有针对性的选择阅读与参考。

2.此笔记中的所有操作均基于root用户进行,其他用户如无权限请自行搜索(linux的基础操作这里不展开讨论),友情提示:即使有权限,也千万别在公司相关生产环境内试验探索哦。

3.本次实战中使用的是我们公司相关的业务项目,其中的代码与产品界面会做相关的脱敏操作。

3.项目描述&事前准备

1.文中产品项目为微服务架构,其他无关服务都已被简化省略,仅展示部分模块。

2.原有服务已简化,将服务器独立分为Jenkins服务器与业务服务器,不展示多余集群与节点,只需准备两台服务器即可(真机、虚拟机随意)

3.本文的主题是介绍Jenkins在持续集成中的使用方式,开发环境与所用到的软件版本可以任意指定,功能没有太大的区别,也不会影响使用。(文中使用的软件可以任意替换,任何的技术栈都可以,Jenkins除外)

4.环境介绍

服务器分为两台,Jenkins应用服务器与业务服务器,以下简称J-Server与S-Server。本文使用CentOS,J-Server中安装Jenkins即可,S-Server安装Java、Tomcat、Maven、Git即可。(这里的技术栈可以根据各自公司的业务与产品来进行随意调整,我们的项目内也有很多组合,只选取市面上最常见的来讲解)

5.服务基础配置

5.1 J-Server

服务器内的Jenkins安装与配置请参看之前的文章:

5.2 S-Server

业务服务器内的软件安装请自行网络搜索,网上有很多优秀的教程供大家参考。这里需要介绍的是一些重要的配置操作。

1.这里为了方便Git与Server之间进行安全的项目源代码的安全传输操作,我们需要在服务器中进行设置。

在Git安装完之后使用以下命令进行Git的全局配置

git config  --global user.name "你的用户名"
git config  --global user.email "你的邮箱"

使用ssh-keygen命令进行密钥的生成

ssh-keygen -C 邮箱 -t rsa

这里会询问你要创建的密钥的文件名,默认名字的话就直接回车

https://i-blog.csdnimg.cn/blog_migrate/3b885e6dfa75e7904e963b7984302cdd.png

接下来询问是否要为密钥设定密码,默认回车跳过

https://i-blog.csdnimg.cn/blog_migrate/c7601a536ba3ef2747b3fade056ffc2b.png

完成之后在用户的主目录中会有一个影藏文件夹.ssh

进入后查看刚才的密钥是否生成正确

后缀名.pbu的是公钥

https://i-blog.csdnimg.cn/blog_migrate/cd816460b318ed3aaa73ceb95a56dfb3.png

然后我们进入这个公钥文件,将文件里的内容复制出来

https://i-blog.csdnimg.cn/blog_migrate/932a1e5bff9e4cd03fc446f5b8eaba8d.png

2.在GitHub中点击设置,选择SSH and GPG keys

https://i-blog.csdnimg.cn/blog_migrate/a685b35a6e54c20027afa99c5ed62f07.png

创建一个新的SSH key

Title输入你自定义的名字即可

Key输入刚才在公钥中复制的那一串字符

确定添加

https://i-blog.csdnimg.cn/blog_migrate/423920f0eb0610c6a9bcc35b4e48fc82.png

确认添加成功后Git与SSH密钥配置完成

https://i-blog.csdnimg.cn/blog_migrate/3fd04bdd065f75b09f1e026f988f9c43.png

6. Jenkins自动化任务配置与部署

6.1 节点创建

在Jenkins工作台中选择系统管理 > 节点管理

https://i-blog.csdnimg.cn/blog_migrate/e4314c11bd390d69c376313060610e98.png

选择新建节点

https://i-blog.csdnimg.cn/blog_migrate/fb7c123a3d302ce30bb1e82ebabfb7e6.png

节点名称输入你指定的名称即可

如果是全新节点的话可选择固定节点

点击创建

https://i-blog.csdnimg.cn/blog_migrate/0cb2cf1f50b8bffd8d763671a2c1b06b.png

远程工作目录指的是S-Server上将执行自动化任务的路径位置

https://i-blog.csdnimg.cn/blog_migrate/019c448af3237c2b99ae48494a4bf7e0.png

启动方式选择Launch agents via SSH

主机填入对应的S-Server的IP

凭证填入对应的S-Server登录用户名和密码(新建凭证看下面的操作)

主机密钥验证策略可以选择Non verifying Verification Strategy

https://i-blog.csdnimg.cn/blog_migrate/895972e1c45a59455bb2dd2fb6b0f6a8.png

没有凭证的话点击添加,选择Jenkins

https://i-blog.csdnimg.cn/blog_migrate/ec98415b1db4473ac8ee3f7fe2da1649.png

其他选项不动,输入用户名和密码保存即可,之后在Credentials

下拉框里直接选择即可

https://i-blog.csdnimg.cn/blog_migrate/82e27e679bc2d9b9227efa93f5fd9894.png

6.2 启动并同步节点

添加完成后点击对应的节点名称,进入节点

https://i-blog.csdnimg.cn/blog_migrate/13ddd93c7a0ae1f895b87cae9cef30e4.png

点击重启代理

https://i-blog.csdnimg.cn/blog_migrate/32be13d579110ab2154b45530c0d347b.png

启动完成后,日志提示启动成功后返回列表查看节点状态,显示同步则表示节点启动成功

https://i-blog.csdnimg.cn/blog_migrate/2a2dad2d1bc2d8f38a1f8dcd70b8899b.png

6.3 自动化任务创建

点击节点后选择新建任务

https://i-blog.csdnimg.cn/blog_migrate/5d60826b8f3ee2a974033d8afdfd6faa.png

输入自定义的任务名称并选择构建自由风格的软件项目

确定添加

https://i-blog.csdnimg.cn/blog_migrate/3854788eeec7ffac7e506fac29eee9f9.png

6.4 自动化任务配置

描述中输入任务相关的一些说明(非必须),这里还是推荐大家填写一下,很多必备的信息甚至备注都可以放在里面,方便其他测试人员快速的对任务有一个了解。

https://i-blog.csdnimg.cn/blog_migrate/b2956f8dbe2cf137fae0b7a3445c716d.png

如果每个节点内的环境不是集群或业务有所不同的话还是建议勾上限“制项目的运行节点”的选项,并指定对应的服务节点。

https://i-blog.csdnimg.cn/blog_migrate/4bc746c015ed3bfda769ca450c2598b4.png

在源码管理中选择Git

https://i-blog.csdnimg.cn/blog_migrate/465f3b69b540f24d11b7d2f7a20c11e2.png

这里在仓库URL中输入项目的源代码下载地址,基于之前已经添加过SSH key了,下载的方式就在Git上选择SSH。在此之前大家记得把自己的项目或产品源代码push至对应的Git仓库并保证S-Sever可以clone代码至本地。

(这里根据自己公司的业务来进行选择,无论是公有仓库还是私有仓库,云还是私有化部署的仓库)

另外如果是第一次在新任务中创建仓库URL,记得在下面多创建一次仓库URL

https://i-blog.csdnimg.cn/blog_migrate/ede1f4fd285376d3709e0d8275c75101.png

凭证之前已经添加过了,直接选择S-Server的账密记录即可

https://i-blog.csdnimg.cn/blog_migrate/46c46ec88635d2fb14e9e6a123d54f67.png

这里选择源代码在Git上所对应的分支,默认为master分支,我的项目源代码在main分支上,这边就输入*/main

https://i-blog.csdnimg.cn/blog_migrate/f3051bcb1cb5f44a9b362d2523d7f430.png

在扩展行为中选择新增

https://i-blog.csdnimg.cn/blog_migrate/74c4f1990232813addb86ea52d755d56.png

选择“检出到子目录”,英文选项(check out to a sub-directory)

https://i-blog.csdnimg.cn/blog_migrate/c85bc66039474fd89a33f4fb1f5bf850.png

输入自己定义的子目录名字即可

https://i-blog.csdnimg.cn/blog_migrate/884b20357459643c5c0882bf4c2009ba.png

在构建中选择增加构建步骤,选择执行shell

https://i-blog.csdnimg.cn/blog_migrate/0fb88fe80a86261e0da13c991ed5a2d6.png

自动化任务的流程示意图

https://i-blog.csdnimg.cn/blog_migrate/dd39503571772109fcc62a349ddb731d.png

基于以上的技术栈,我们执行以下shell命令

方便Jenkins进行后台运行

BUILD_ID=dontkillme
  • 1

设置两个全局变量,第一个可以返回工作目录所在位置,也就是刚才Jenkins中设置的远程目录;第二个可以返回Tomcat的安装位置,方便后续脚本内的Tomcat相关服务的操作。

export WORK_PATH=`pwd`
export TOMCAT_PATH=`S-Server内的tomcat安装路径`
  • 1
  • 2
sh $WORK_PATH/build.sh
  • 1

6.5 自动化任务运行

点击保存后,点击任务名

https://i-blog.csdnimg.cn/blog_migrate/f04e96b9cbffef54e591663d565eb668.png

进入后点击左侧的立即构建

https://i-blog.csdnimg.cn/blog_migrate/3531f079ca2d9bf6fed5acb8fcfbc6a8.png

点击任务队列中对应的任务

https://i-blog.csdnimg.cn/blog_migrate/fda3489b0ad2e85daeb22c1e383557f7.png

选择控制台输出或直接查看状态图标

https://i-blog.csdnimg.cn/blog_migrate/978855de79b6963a3d6b5778af2fb22b.png

最后显示Finished: SUCCESS 就表示构建成功了

https://i-blog.csdnimg.cn/blog_migrate/8e1d833407be52f4cb706cb85298cc8d.png

至此一个测试环境就通过Jenkins的自动任务构建完成了,大家可以通过对应的服务IP和端口进行访问验证。

以上只是展示了如何通过Jenkins来进行测试环境的快速自动化搭建,后续会对实战中的一些细节来进行讲解。

最后我邀请你进入我们的【 软件测试学习交流群:785128166】 , 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

https://i-blog.csdnimg.cn/blog_migrate/c738234fe8650fb39f1db1c0ae05828c.png

https://i-blog.csdnimg.cn/blog_migrate/333c32b2ca04705bc7d37d00a031c20c.jpeg