SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

这篇具有很好参考价值的文章主要介绍了SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

前面我们在Kubernetes中部署了SonarQube并与Jenkins集成扫描了前后端代码;
部署SonarQube链接
SonarQube与Jenkins集成扫描前后端代码链接
接下来记录一下如何将扫描报告通过邮件附件的形式推送到相应人的邮箱;



一、配置SonQube生成PDF扫描报告

1.下载gitee开源PDF插件到SonarQube的plugins目录下

https://gitee.com/zzulj/sonar-pdf-plugin/releases
https://gitee.com/zzulj/sonar-pdf-plugin/releases/download/v4.0.0/sonar-pdfreport-plugin-4.0.0.jar

[root@iZbp188o3jng3gjlcx8nzsZ plugins]# pwd 
/hqtbj/hqtwww/NFS/kubernetes/sonar-sonar-extensions-pvc-fd77d0df-11fe-4338-a4d9-bc5f948a90de/plugins
[root@iZbp188o3jng3gjlcx8nzsZ plugins]# wget https://gitee.com/zzulj/sonar-pdf-plugin/releases/download/v4.0.0/sonar-pdfreport-plugin-4.0.0.jar
[root@iZbp188o3jng3gjlcx8nzsZ plugins]# ll
total 12932
-rwx------ 1 sonarqub sonarqub    64076 Nov 30 11:54 sonar-l10n-zh-plugin-9.0.jar
-rwxr-xr-x 1 sonarqub sonarqub 13175122 Dec  1 14:01 sonar-pdfreport-plugin-4.0.0.jar

因为前面我们是将SonarQube部署在kubernetes里,然后使用pv的方式将sonar的plugin挂在到了nfs的sonar-extensions里,所以这里就直接将这个插件下载到了nfs的sonar-extensions/plugins下
如果不是将SonQube部署在kubernetes里的话那就下载到sonarqube安装目录下的plugins里即可;

2.重启SonarQube载入PDF插件

SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

3.配置SonarQubePDF插件的用户名密码

这里设置成sonar登录的用户名密码就行
【菜单栏】➡【配置】➡【PDF Report】
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

4.删除sonarqube里的项目重新扫描

添加PDF插件后jenkins执行扫描步骤日志如下
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

重新扫描完成后点击进入项目,然后点击【更多】里面就能以PDF的方式下载本次的扫描报告
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;



二、jenkins的服务器上安装mailx

1.yum方式安装mailx

[root@iZbp140uu4029bydn7ax4fZ ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@iZbp140uu4029bydn7ax4fZ ~]# yum -y install mailx
[root@iZbp140uu4029bydn7ax4fZ ~]# mail --help
mail: illegal option -- -
Usage: mail -eiIUdEFntBDNHRVv~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

2.编辑mailx的主配置文件,添加mailx发邮件的参数

在最后一行添加

[root@iZbp140uu4029bydn7ax4fZ ~]# vim /etc/mail.rc

#发件人
set from=zhangsan@xxxx.com
#这是企业微信的stmp地址
set smtp=smtps://smtp.exmail.qq.com:465
#邮箱账户
set smtp-auth-user=zhangsan@xxxx.com
#邮箱密码(企业邮箱的话就是邮箱账户的密码,如果是qq/163邮箱的话就是smtp的授权码)
set smtp-auth-password=xxxxxx
set smtp-auth=login
#set smtp-use-starttls
set ssl-verify=ignore
#设置ssl目录
set nss-config-dir=/root/.certs

2.配置SSL来发邮件

这一步可以省略,有的话更好;不配置的话发送邮件时容易报错"Error in certificate: Peer’s certificate issuer is not recognized"

[root@iZbp140uu4029bydn7ax4fZ ~]# mkdir ~/.certs
[root@iZbp140uu4029bydn7ax4fZ ~]# echo -n | openssl s_client -connect smtps://smtp.exmail.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qywx.crt
[root@iZbp140uu4029bydn7ax4fZ ~]# echo -n | openssl s_client -connect smtp.exmail.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qywx.crt
[root@iZbp140uu4029bydn7ax4fZ ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qywx.crt
[root@iZbp140uu4029bydn7ax4fZ ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qywx.crt
[root@iZbp140uu4029bydn7ax4fZ ~]# certutil -L -d /root/.certs
[root@iZbp140uu4029bydn7ax4fZ ~]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qywx.crt
[root@iZbp140uu4029bydn7ax4fZ ~]# ll .certs/
total 100
-rw------- 1 root root 65536 Dec  1 11:52 cert8.db
-rw------- 1 root root 16384 Dec  1 11:52 key3.db
-rw-r--r-- 1 root root  2338 Dec  1 11:51 qywx.crt
-rw------- 1 root root 16384 Dec  1 11:52 secmod.db

3.测试发送邮件

[root@iZbp140uu4029bydn7ax4fZ ~]# echo "111" | mail -s  "test标题" zhangsan@xxxx.com

SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;


测试发送邮件并添加附件

[root@iZbp140uu4029bydn7ax4fZ ~]# touch a.txt 
[root@iZbp140uu4029bydn7ax4fZ ~]# echo "111" | mail -s  "test标题" -a *.txt zhangsan@xxxx.com

SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;



三、jenkins调用本地的mailx服务发送含有扫描报告附件的邮件到指定邮箱

1.思路

SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;
我们可以在jenkins的构建日志里看到sonar代码检测时的工作目录为项目job的$WORKSPACE下面的target/sonar目录,所以生成的PDF也会在这个目录下,所以我们可以直接在生成PDF文件之后调用mail命令发送到我们指定的邮箱就可以了

2.编写jenkinsfile

设置构建时选择的参数
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

在sonar检测步骤添加发送邮件配置
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

完整pipeline如下:

pipeline {
        agent any
        tools{
            maven 'mvn-3.6.3'
        }
        
        //全局变量
        environment { 
            //Harbor仓库地址以及以及镜像所在Harbor项目
         Harbor_Registry_URL= 'xxxx'
         Harbor_Registry_Cert= 'xxxx'
         Fat_Harbor_Registry_Project= 'xxxx'
         Pro_Harbor_Registry_Project= 'xxxx'
         
         
            //gitee代码仓库地址以及项目名称
         Gitee_Registry_URL= 'xxxx'
         Gitee_Code_Project= 'gotone-dw-api'
         
         //-SonqrQube信息
         SonarQube_URL= 'http://internal.sonarqube.com'
         SonarQube_Secret= '7231ab346d6bf1875e7a6da5353a872aab25afa0'
         
           //项目所在kubernetes命名空间(环境)
         Kubernetes_Project_Namespace_fat= 'xxx'  
         
        }
    parameters {
      gitParameter branch: '', branchFilter: 'origin/(.*)', defaultValue: 'master', description: '选择拉取代码的分支', name: 'Branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'GitParameterDefinition'
      booleanParam  description: '是否进行代码质量检测;', name: 'IS_CODE_DETECTION'
      choice choices: ['zhangsan@xxxxx.com', 'lisi@xxxx.com', 'wangwu@xxxx.com', 'zhaoliu@xxxx.com', 'xxx@xxxx.com', 'xxx@xxxx.com', 'xxx@xxxx.com'], description: '''********************************************
*        请在下方选择接收检测报告的邮箱      *
*        请在下方选择接收检测报告的邮箱      *                        
********************************************''', name: 'RECEIVE_MAILBOX'
      booleanParam  description: '是否部署到fat环境;', name: 'IS_DEPLOY_FAT'
      booleanParam  description: '是否部署到fat1环境;', name: 'IS_DEPLOY_FAT1'
      booleanParam description: '是否将本次构建镜像推送到pro线上仓库;', name: 'Push_Image_To_Pro_Registry'
      choice(name:'Replicase', choices:'1\n3\n5', description:'请选择副本数(如果对此参数不清楚的话,默认即可);' )
    }

    stages {
        stage('拉取代码') {
            steps {
                xxxx
            }
        }
        
        stage('质量检测') {
            when { expression { return params.IS_CODE_DETECTION } }
            steps {
                withSonarQubeEnv('SonarQube') {
                sh """
                  mvn  sonar:sonar \
                  -Dsonar.projectKey=${Gitee_Code_Project} \
                  -Dsonar.host.url=${SonarQube_URL} \
                  -Dsonar.login=${SonarQube_Secret}
                  
                  cd $WORKSPACE/target/sonar
                  echo "${JOB_NAME}-第${BUILD_NUMBER}次代码扫描报告" > mail.txt
                  echo "项目名称 : ${JOB_NAME}" >> mail.txt
                  echo "构建编号 : 第${BUILD_NUMBER}次构建" >> mail.txt
                  echo "代码路径 : ${Gitee_Registry_URL}" >> mail.txt
                  echo "构建日志 : ${BUILD_URL}consoleText" >> mail.txt
                  echo "构建Url : ${JOB_URL}" >> mail.txt
                  echo "工作目录 : ${WORKSPACE}" >> mail.txt
                  cat mail.txt  | mail -s "SonarQube 检测报告" -a *.pdf ${RECEIVE_MAILBOX}
                """
                }
            }
        }
		
        stage('代码编译') {
            steps {
                sh """
                   mvn  xxxx这里是正常编译代码的步骤
                   """
            }
        }
        stage('构建并上传到测试仓库') {
            steps {
                  xxxx
                  xxxx
            }
        }
        
        //-部署到fat环境
        stage('部署到测试环境') {
            when { expression { return params.IS_DEPLOY_FAT } }
            steps {
                xxx
            }
        }
        
        stage('将本次构建的镜像传到pro仓库') {
              when { expression { return params.Push_Image_To_Pro_Registry } }
            steps {
                xxx    
            }
        }
        
        stage('清除本地镜像') {
            steps {
                xxx
            }
        }
   }
}

我这里是后端java的pipeline里加的配置,前端vue一样 加到质量检测步骤后面就可以,pipeline可以参考SonarQube与Jenkins集成篇


3.jenkins重新发起构建,测试是否会发送以PDF附件的扫描报告到我们的邮箱

构建时需要指定的参数如下:
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;
构建完成后指定的收件人会收到如下邮件:
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;




至此SonarQube与jenkins集成并发送扫描报告到邮箱就完成了;


遇到的问题:

错误信息如下:
这是在测试发送邮件时遇到的错误

[root@iZbp140uu4029bydn7ax4fZ ~]# echo "111" | mail -s  "test标题" fandaoshuai@cngotone.com
[root@iZbp140uu4029bydn7ax4fZ ~]# SSL/TLS handshake failed: SSL received a malformed Alert record.
"/root/dead.letter" 11/338
. . . message not sent.

SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;



解决方式:

我在本文中已经注释
直接注释掉/etc/mail.rc配置文件里的"set smtp-use-starttls"配置即可
SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;文章来源地址https://www.toymoban.com/news/detail-468252.html

到了这里,关于SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 7.云原生之jenkins集成SonarQube

    云原生专栏大纲 添加应用仓库https://charts.kubesphere.io/main,在仓库中安装SonarQube 搭建 SonarQube 并配置到 KubeSphere 将 SonarQube 集成到流水线 【应用仓库安装】 sonarqube地址: 创建sonar-token生成令牌 240cb3903f4ee4aba15f531686dc6bc598c28cc3 查看jenkins暴露的NodePort端口 http://master节点ip:30180/so

    2024年02月02日
    浏览(32)
  • java集成itextpdf实现通过pdf模板填充数据生成pdf

    我采用的是pdfelement 官网地址需要付费或者自行破解,也可以使用其他pdf编辑器。 将制作好的pdf模板放入项目resources/pdf目录下,如图 浏览器访问ip:port/test/pdf,其中ip为你的ip地址,port为你的端口,访问结果如下:

    2024年02月16日
    浏览(39)
  • DevOps之Jenkins 集成 SonarQube 、Gitlab实现代码自动提交质量检测

    实验中相应服务的安装步骤略 准备相关服务器,并实现各个服务器的DNS解析 [root@ubuntu2204 ~]#cat /etc/bind/hailin.org.zone $TTL 1D @ IN SOA master admin ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.201 gitlab A 10.0.0.179 jenkins A 10.0.0.171 harbor A 10.0.0.201 sonarqube A 10.0.0.178 安

    2024年02月02日
    浏览(41)
  • 持续集成搭建+邮件推送设置(jenkins+jmeter+ant)

    一、实现逻辑步骤: 1、本机安装ant; 2、jenkins中安装ant插件; 3、创建ant的build.xml; 4、在jenkins的job 中的调用ant插件:         1)运行build.xml         2)jenkins调用ant执行jmeter脚本         3)并用ant生成测试报告;         4)将报告存储到指定目录; 5、E-m

    2024年02月15日
    浏览(34)
  • Springboot 集成Prometheus 数据采集 使用grafana 监控报告告警 邮件配置

    目录 Springboot 相关 Pom 重点包 如果有需要可以增加安全包-一般内部机房没啥事-(非必选) Application.yml配置文件-(非必选) Application.properties management.endpoints.web.exposure.include介绍 启动类 查看监控信息 Prometheus Prometheus.yml 配置 如果使用类安全包-(非必选) 启动就可以看到了

    2024年02月11日
    浏览(50)
  • (十六)devops持续集成开发——jenkins流水线构建之邮件通知

    本节内容主要介绍jenkins在流水线任务构建完成后的通知操作,使用jenkins的邮件通知插件完成构建任务结束的通知。一般项目发布都会通知相关的责任人,这样项目发布在出现问题时能够及时的处理。 ①在插件中心安装Email Extension邮件通知插件 ②申请一个发送邮件的邮箱服务

    2024年02月21日
    浏览(63)
  • Selenium+python怎么搭建自动化测试框架、执行自动化测试用例、生成自动化测试报告、发送测试报告邮件

    本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用。后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的学习和应用。 以下整理的只是书中自动化项目的知识内容,介绍怎么搭

    2024年02月05日
    浏览(62)
  • 使用Pytest集成Allure生成漂亮的图形测试报告

    目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告  资料获取方法 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。 这一次

    2024年02月13日
    浏览(29)
  • SonarQube扫描常见Bug、漏洞修复整理(持续更新中)

    这种提示是指可能存在空指针异常,需要增加空值检测。 说明:未做非空校验,可能产生空指针 解决方案:加上非空校验 解决方式:先判断或者先实例化,再访问里面的属性或者成员。 说明:int数运算最终再把结果转为long将有可能产生溢出 说明:防止内存泄露溢出,Thr

    2024年02月15日
    浏览(53)
  • jacoco单测报告怎么同步到sonarqube

    sonarqube支持多种代码覆盖率的报告展示,最常用的当属jacoco报告,那么jacoco的报告怎么同步到我们的sonarqube中呢? 我们先看看jacoco的offline模式(单元测试)报告生成的流程 根据上图我们需要生成单测报告,有两个关键点: 触发单测 触发jacoco生成报告 为了实现上述功能,我

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包