前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >持续集成实战 —— Jenkins自动化测试环境搭建

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

原创
作者头像
Austin_zhai
修改2022-08-17 10:12:37
1.2K0
修改2022-08-17 10:12:37
举报

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-Serve

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

【Jenkins使用手册(1) —— 软件安装】

【Jenkins使用手册(2) —— 软件配置】

5.2 S-Serve

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

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

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

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

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

ssh-keygen -C 邮箱 -t rsa

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

生成密钥
生成密钥

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

设置密钥属性
设置密钥属性

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

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

后缀名.pbu的是公钥

公钥和密钥
公钥和密钥

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

公钥内容
公钥内容

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

添加SSH Keys
添加SSH Keys

创建一个新的SSH key

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

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

确定添加

添加SSH Key
添加SSH Key

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

Key列表
Key列表

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

6.1 节点创建

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

节点管理
节点管理

选择新建节点

新建节点
新建节点

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

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

点击创建

创建节点
创建节点

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

设置远程工作目录
设置远程工作目录

启动方式选择Launch agents via SSH

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

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

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

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

添加凭证
添加凭证

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

下拉框里直接选择即可

选择凭证
选择凭证

6.2 启动并同步节点

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

节点列表
节点列表

点击重启代理

启动节点
启动节点

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

查看同步状态
查看同步状态

6.3 自动化任务创建

点击节点后选择新建任务

创建任务
创建任务

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

确定添加

创建任务
创建任务

6.4 自动化任务配置

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

任务属性设置
任务属性设置

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

任务属性设置
任务属性设置

在源码管理中选择Git

选择代码源
选择代码源

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

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

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

设置仓库地址
设置仓库地址

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

选择凭证
选择凭证

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

选择分支
选择分支

在扩展行为中选择新增

创建扩展行为
创建扩展行为

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

设置规则
设置规则

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

设置子目录
设置子目录

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

设置构建行为
设置构建行为

自动化任务的流程示意图

流程示意图
流程示意图

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

方便Jenkins进行后台运行

BUILD\_ID=dontkillme

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

export WORK\_PATH=`pwd`

export TOMCAT\_PATH=`S-Server内的tomcat安装路径`
sh $WORK\_PATH/build.sh

6.5 自动化任务运行

点击保存后,点击任务名

任务列表
任务列表

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

开始构建
开始构建

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

查看任务构建进度
查看任务构建进度

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

查看日志输出
查看日志输出

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

查看日志
查看日志

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.目的
  • 2.说明
  • 3.项目描述&事前准备
  • 4.环境介绍
  • 5.服务基础配置
    • 5.1 J-Serve
      • 5.2 S-Serve
      • 6. Jenkins自动化任务配置与部署
        • 6.2 启动并同步节点
          • 6.3 自动化任务创建
            • 6.4 自动化任务配置
              • 6.5 自动化任务运行
              相关产品与服务
              持续集成
              CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档