使用Jenkins搭建持续集成环境的方法(三)

本文介绍在CentOS 7中使用Jenkins搭建持续集成环境的常见用法。包括发布gtest测试报告、发送构建邮件、角色权限管理和圈复杂度检查。详细说明了各功能的系统设置、项目配置、插件安装等操作步骤,以实现测试报告发布、邮件通知、用户权限控制和代码复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列文章主要介绍使用Jenkins搭建持续集成环境的具体方法。

本文为系列文章的第三篇,主要介绍Jenkins持续集成环境的常见用法,如发布测试报告、发送构建结果邮件、发送圈复杂度检查报告等。

说明:本文的Jenkins持续集成环境是在CentOS 7操作系统中部署的。

1 发布gtest测试报告

发布(gtest)测试报告属于Jenkins默认提供的功能,无需安装插件。

在项目配置中,点击“增加构建后操作步骤”、选择“Publish JUnit test result report”,进行发布测试报告的设置,如下图所示:

在上图中,在“测试报告(XML)”框中填写需要项目生成的测试报告路径及文件。例如:现有一个项目的代码位于“code/”目录中、测试报告为xml格式、测试报告生成的位置是“code/test/test_results”,那么就可以填写“code/test/test_results/*.xml”。

另外,可以勾选“保留长的标准输出/错误”。

完成上面的测试报告发布设置后,在构建项目后,就可以在项目的构建报告中查看到测试报告检查结果,如下图所示:

说明:本文中使用的测试报告是通过gtest测试框架生成的,gtest生成测试报告的方法,请参考相关资料,本文不做展开介绍。

2 发送构建邮件

使用Jenkins默认提供的邮件通知服务,可以实现发送构建邮件的功能。

2.1 系统设置

1. 在Jenkins主页点击“系统管理”、“系统设置”,进入到系统设置页面,然后设置“Jenkins Location”,如下图所示:

在上图中,设置“系统管理员邮件地址”,此邮件地址需要与后续“SMTP认证”时使用的“用户名”一致。

2. 设置邮件通知的详细内容,如下图所示:

说明:正常情况下,邮件通知属于Jenkins的默认提供功能,不过如果在系统设置中没有找到“邮件通知”的相关设置,那么就需要查看一下邮件插件(Mailer)是否已安装,若未安装,则需手动安装该插件。

在上图中,根据实际情况填写相应的内容:

  • SMTP服务器:企业的发件服务器名称。例如使用Foxmail邮箱,可以在“系统设置”、“账号”中查看发件服务器信息,如下图所示:
  • 用户默认邮件后缀,与上图中的“账号”邮件的后缀保持一致即可;
  • 用户名和密码:使用企业邮箱的用户名和密码即可;

在完成上述配置后,可通过勾选“通过发送测试邮件测试配置”,然后在“Test e-mail recipient”中填写收件人邮箱,点击“Test configuration”,测试我们对邮箱的配置是否生效。如果收件人邮箱收到了测试邮件,说明我们的邮箱配置生效了。

2.2 项目配置

在完成前面的系统配置后,还需要针对特定的项目进行邮件设置。

选择具体的项目,点击“配置”,进行项目配置页面,点击“增加构建后操作步骤”,选择“E-mail Notification”,如下图所示:

在上图中,在“Recipients”中填写收件人邮箱地址,即可实现发送项目构建邮件的功能了。

如果想在每次不稳定(unstable)的构建后,都发送邮件通知,则勾选“每次不稳定的构建都发送邮件通知”。

3 角色权限管理

通过使用“Role-based Authorization Strategy”插件,可以实现Jenkins的角色权限管理功能。

3.1 用户管理

这里需要说明一下,如果使用svn管理源码,那么只要提交过svn代码并在Jenkins中进行过构建,那么该用户的信息就会保留在Jenkins中了,如下图所示:

以此为基础,可以很方便地进行用户管理。点击上图中的某个用户名称(如“xxb”),则会进入到该用户的设置界面中,如下图:

在上图中,点击“设置”,对该用户进行管理,如下图所示:

在用户设置页面,主要设置该用户的密码,然后点击“保存”,即可完成对该用户的设置操作。

此时,就可以使用该用户登录Jenkins了,如下图:

3.2 用户权限控制

在上一步添加了一个Jenkins用户之后,使用该用户登录Jenkins时,发现该用户有很多操作权限,这显然不利于Jenkins的系统安全,所以,需要对该用户进行权限控制。

3.2.1 安装插件

首先,需要安装“Role-based Authorization Strategy”插件,如下图所示:

插件安装完成后,需要重启Jenkins。

3.2.2 全局安全设置

安装完上面的插件后,进入Jenkins主页中,点击“系统管理”、“全局安全配置”,进入全局安全配置页面,如下图所示:

在上图中,主要是将“授权策略”修改为“Role-Based Strategy”,即使用前面安装的插件进行用户权限控制。

之后,点击“保存”即可。

3.2.3 管理、分配角色

选择了授权策略之后,就需要进行具体的角色管理了。

进入Jenkins主页中,点击“系统管理”,能看到“Manage and Assign Roles”功能,如下图所示:

点击上图中的“Manage and Assign Roles”,转到具体的角色管理页面,如下图所示:

1. 点击“Manage Roles”,进行角色管理。

首先需要新建一个角色(如developer),如下图所示:

然后,为新建的角色(developer)根据实际需要分配权限,如下图所示:

在上图中,我们为developer角色分配了项目构建权限、Jenkins服务信息读取权限。(我们能够看到,admin角色默认拥有所有权限)

点击“save”保存该developer角色信息。

2. 回到“Manage and Assign Roles”页面,点击“Assign Roles”,如下图所示:

进入“Assign Roles”页面,为Jenkins用户分配指定的角色,如下图所示:

在上图中,我们看到了刚刚添加的新角色developer。我们将前面创建的用户“xxb”设置为developer角色。

点击“save”保存设置。至此,就完成了对于用户“xxb”的权限控制。

此时,再次使用“xxb”用户登录Jenkins,发现其权限发生了变化,如下图所示:

从上图中可以看到,“xxb”用户不再拥有“创建任务”、“系统管理”等功能,这说明上述对于该用户的权限控制生效了。

4 圈复杂度

通过CCM插件可以实现发布代码圈复杂度报告的功能。

4.1 安装插件

首先需要安装插件CCM,CCM插件信息如下图所示:

4.2 生成代码圈复杂度

这里需要说明的是,Jenkins的CCM插件只是一个圈复杂度报告的分析和发布工具,其本身并不具备生成代码圈复杂度的功能,所以在这里还需要一个生成圈复杂度数据的工具。

4.2.1 编译生成圈复杂度工具

检查代码复杂度的工具有很多,本文选择了GitHub上的CCM工具,相关的GitHub链接为: https://github.com/jonasblunck/ccm

按照该链接中的指导,最终编译(需要使用 vs 进行编译)出检查代码圈复杂度的程序“CCM.exe”,该程序是Windows程序,为了能在Linux运行,需要在Linux上安装mono,相关命令如下:

mono-core-4.6.2-4.el7.x86_64

安装mono之后,就可以在CentOS 7上运行CCM.exe了。

之后,将圈复杂度检查工具的相关文件上传到Jenkins服务器上,圈复杂度检查工具在Jenkins服务器上的信息,如下图所示:

[root@ACC_APP /var/lib/jenkins/workspace/account_system_CI/ci]# l
total 56
drwxr-xr-x 2 root root    69 Aug 28 19:11 ./
drwxr-xr-x 5 root root    39 Aug 28 19:10 ../
-rw-r--r-- 1 root root   543 Aug 28 14:45 account_sys_ccm.config
-rw-r--r-- 1 root root 31232 Aug 10 08:55 CCMEngine.dll
-rw-r--r-- 1 root root 19456 Aug 10 08:54 CCM.exe
[root@ACC_APP /var/lib/jenkins/workspace/account_system_CI/ci]# 

对于上图中的几个文件,说明如下:

  • CCM.exe:编译GitHub上的源代码生成的可执行文件;
  • CCMEngine.dll:编译GitHub上的源代码生成的可执行文件;
  • account_sys_ccm.config:圈复杂度的配置文件,供CCM.exe使用;

4.2.2 编写CCM配置文件

CCM配置文件是核心文件,CCM.exe读取CCM配置文件的内容,进行具体的圈复杂度分析。

有以下两种方式来了解CCM配置文件的写法说明:

1. 通过在CentOS 7命令行运行“mono CCM.exe”,可得到CCM配置文件的示例,以及相关元素的描述,如下图所示:

2. 从GitHub上获取的源码中,有一个“readme.doc”文件,在该文件中也介绍了CCM配置文件的元素信息描述。

本文中使用的CCM示例配置文件信息内容如下:

[root@ACC_APP /var/lib/jenkins/workspace/account_system_CI/ci]# cat account_sys_ccm.config 
<ccm>
  <analyze>
    <folder>../code</folder>
  </analyze>
  <exclude>
    <folder>../code/preplatform</folder>
    <folder>../code/test</folder>
  </exclude>
  <recursive>yes</recursive>
  <outputter>Xml</outputter>
  <threshold>15</threshold>
  <numMetrics>20</numMetrics>
  <suppressMethodSignatures>yes</suppressMethodSignatures>
  <switchStatementBehavior>IgnoreCases</switchStatementBehavior>
  <fileExtensions>
    <fileExtension>.cpp</fileExtension>
    <fileExtension>.h</fileExtension>
  </fileExtensions>
</ccm>
[root@ACC_APP /var/lib/jenkins/workspace/account_system_CI/ci]# 

4.2.3 运行CCM

编写完CCM配置文件后,就可以运行CCM程序,来生成圈复杂度报告了。在CentOS 7中,CCM程序的运行命令如下:

mono CCM.exe account_sys_ccm.config > ccm.xml

上面的命令根据配置文件account_sys_ccm.config的内容,生成一份圈复杂度报告,并将报告的内容保存在ccm.xml中。这个ccm.xml就是Jenkins服务需要发布和展示的圈复杂度报告了。

说明:在实际的持续集成环境部署中,需要把CCM的程序运行过程放入Jenkins的构建过程中,一般都是在代码编译后,再生成圈复杂度报告的。

4.3 发布圈复杂度检查结果

针对某个项目进行设置,实现发布圈复杂度报告的功能,具体设置方法如下图所示:

在上图中的“CCM results”栏中,填写使用CCM工具生成的圈复杂度报告的位置(注意这里是相对于项目根目录的位置)。同时,还可以根据需要,填写圈复杂度检查结果对于本次构建的影响(unstable、failed)。

至此,在Jenkins中集成代码圈复杂度检查的设置就结束了。

完成上述设置后,当完成了一次项目构建时,可以在构建报告中找到圈复杂度检查结果,如下图所示:

可以通过点击上图中的告警信息,查看详细的圈复杂度检查结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liitdar

赠人玫瑰,手有余香,君与吾共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值