上一篇我们主要聊了下代码质量管理平台sonarqube的安装部署以及它的工作方式做了简单的描述和代码扫描演示;回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13822428.html;今天我们来聊一下使用持续集成工具jenkins结合代码质量管理平台sonarqube来做代码扫描的相关配置;

  通过前面对jenkins的介绍使用,我们知道jenkins是一款高度插件化的软件,其扩展性非常好;我们需要对其jenkins赋予某种功能,那么我们直接安装对应的插件即可;同样的道理,我们需要jenkins结合sonarqube来做代码质量扫描,那么我们就需要让jenkins知道sonarqube在哪里,通过jenkins的api调用,把扫描器扫描的结果通过sonarqube放在对应的数据库中;这样一来,我们在执行jenkins的任务时,只需要配置sonar-scanner就好;当然要把jenkins上的sonar-scanner对代码的扫描结果放在指定的sonarqube配置的数据库中,我们首先要在jenkins上安装对sonarqube支持的插件;其次sonarqube和扫描器sonar-scanner是可以不在同一主机的;结合sonarqube和扫描器sonar-scanner的工作逻辑,扫描器只需要配置连接sonarqube的相关地址以及对应项目的相关属性,然后扫描器就可以正常工作了;我们可以理解为一个sonarqube平台对应多台server上的sonar-scanner;只要sonar-scanner能够正常的连接到sonarqube,就能把本地server上的项目代码扫描结果写到sonarqube指定的数据库中,通过sonarqube的web平台给予展示;好了,介绍了jenkins结合sonarqube做代码扫描的工作逻辑后,我们来看一下具体的配置吧!!

  1、在jenkins上安装支持sonarqube scanner的插件

  提示:安装好sonarqube scanner插件后,重启jenkins让其插件生效;

  2、配置sonarqube scanner关联sonarqube server

  提示:在jenkins的系统管理--->系统配置里找到sonarqube servers进行配置,把对应的sonarqube server的名称和地址配置上即可,这里的名称是你标识sonarqube server的字符,可以是任意一个合法的名称;

  3、配置jenkins关联sonarqube scanner

  提示:在jenkins的系统管理--->系统全局工具配置里找到sonarqube sanner进行配置;如果jenkins所在server上没有手动安装的有sonarqube scanner,那么我们可以把自动安装勾选上,然后给它起一个名称,选择对应的版本后,点击应用,jenkins会自动帮我们把对应版本的sonarqube scanner安装上;如果本地有sonarqube scanner,我们可以不让jenkins帮我们自动安装,我们只需要指定sonarqube scanner的安装位置即可;如下

  提示:我这里在jenkins上是没有手动安装sonarqube-scanner,所以我们指定的目录当然也是不存在的;如果本地安装的有,指定其安装目录和对应给sonarqube-scanner起的名称即可;以上方式选择其中一种就好;配置好以后,点击应用;

  4、在jenkins的任务中配置项目进行扫描

  4.1、在gitlab上新建一个空项目,然后复制其克隆地址

  4.2、将其空项目克隆到本地

[root@node04 ~]# ll
total 6640
drwxr-xr-x 4 root root 103 Jul 25 2016 sonar-examples-master
-rw-r--r-- 1 root root 6796222 Aug 20 2019 sonar-examples-master.zip
[root@node04 ~]# git clone git@192.168.0.46:test-app/test-app.git
Cloning into 'test-app'...
warning: You appear to have cloned an empty repository.
[root@node04 ~]# ll
total 6640
drwxr-xr-x 4 root root 103 Jul 25 2016 sonar-examples-master
-rw-r--r-- 1 root root 6796222 Aug 20 2019 sonar-examples-master.zip
drwxr-xr-x 3 root root 18 Oct 17 16:53 test-app
[root@node04 ~]# cd test-app/
[root@node04 test-app]#

  3、将项目代码上传到服务器并放置到克隆的本地目录中,然后提交到gitlab

[root@node04 test-app]# ll
total 0
[root@node04 test-app]# cp -r /root/sonar-examples-master/projects/languages/python/python-sonar-runner/* .
[root@node04 test-app]# ll
total 12
-rw-r--r-- 1 root root 461 Oct 17 16:54 README.md
-rw-r--r-- 1 root root 338 Oct 17 16:54 sonar-project.properties
drwxr-xr-x 5 root root 93 Oct 17 16:54 src
-rw-r--r-- 1 root root 290 Oct 17 16:54 validation.txt
[root@node04 test-app]# git add .
[root@node04 test-app]# git config --add user.name admin
[root@node04 test-app]# git config --add user.email admin@admin.com
[root@node04 test-app]# git commit -m 'this is test demo'
[master (root-commit) b795d85] this is test demo
12 files changed, 526 insertions(+)
create mode 100644 README.md
create mode 100644 sonar-project.properties
create mode 100644 src/__init__.py
create mode 100644 src/badfortune.py
create mode 100644 src/directory/file_in_directory.py
create mode 100644 src/package/__init__.py
create mode 100644 src/package/file_in_package.py
create mode 100644 src/samples/__init__.py
create mode 100644 src/samples/fortune.py
create mode 100644 src/samples/letters.py
create mode 100644 src/samples/strfile.py
create mode 100644 validation.txt
[root@node04 test-app]# git log
commit b795d851eadf7b2abb8c015319a2b8ea0c260d4b
Author: admin <admin@admin.com>
Date: Sat Oct 17 16:55:52 2020 +0800 this is test demo
[root@node04 test-app]# git remote -v
origin git@192.168.0.46:test-app/test-app.git (fetch)
origin git@192.168.0.46:test-app/test-app.git (push)
[root@node04 test-app]# git push origin master
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (15/15), 8.28 KiB | 0 bytes/s, done.
Total 15 (delta 0), reused 0 (delta 0)
To git@192.168.0.46:test-app/test-app.git
* [new branch] master -> master
[root@node04 test-app]#

  验证:到gitlab上查看,是否将项目提交到仓库了?

  提示:可以看到现在gitlab对应仓库就有了对应的项目文件;

  在jenkins上配置任务,将其我们上传的代码从gitlab上拉取下来,然后做代码扫描

  提示:这里我们创建任务时,可以在源码管理写上对应项目的克隆地址,以及凭证;上面配置表示在jenkins执行这个任务时,它会到我们指定的仓库地址将其代码拖到本地;

  提示:这里主要是配置代码扫描器的配置,告诉sonarscanner在哪里去找源码,对应源码是什么语言编写的(写源码后缀名称,不能写python),对应源码的编码;到此代码扫描就配置完了,后续如果还有其他构建操作,我们可以继续添加对应的构建模块;最后都编辑好了后,点击应用即可;

  验证:执行jenkins任务,看看是否能够将代码从gitlab上拉去下来进行代码扫描?

  提示:构建完成没有报错,前面的小圆圈是蓝色的,有错误就是红色的;我们在构建项目中只是配置了扫描代码,其中里面调用了sonarqube scanner插件;从上面的结果可以看到,比之前构建项目时,后面多了一个sonar的图标,我们可以点击此图标跳转到对应的sonarqube上查看扫描的结果;

  查看构建日志

  提示:从构建日志中我们能够清楚的看到先是克隆代码到本地目录,然后再是使用jenkins插件下载sonarqube_scanner,然后sonar-scanner进行代码扫描;

持续集成工具之jenkins+sonarqube做代码扫描的更多相关文章

  1. 持续集成工具之Jenkins

    Jenkins是一个很好的持续集成工具,不光可以帮助开发进行自动打包,自动验证升级和安装,也可以帮助测试人员定时执行测试任务,或者在开自动打包安装之后自动执行测试任务,实现打包-安装-测试一条线服务, ...

  2. 【持续集成工具】 Jenkins

    一.什么是持续集成 持续集成(CI):简单来说就是指将开发者的工作内容频繁地集成到主干中. 而持续集成工具可以将开发者频繁需要构建,编译,测试,部署等操作自动进行,为开发提供了非常大便利. 二.持续集 ...

  3. 持续集成工具之Jenkins安装部署

    一.DevOps理念 所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写.devops理念主要是针对企业中的研发人员.运维人员和测试人员的工作理念,是 ...

  4. 持续集成工具之Jenkins使用配置

    在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...

  5. 持续集成工具之Jenkins pipline简单示例

    前文我们主要聊了下jenkins的插件安装.用户及权限管理.邮件发送.配置凭证到gitlab上拉取项目和创建普通job:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...

  6. 持续集成之四:Jenkins+sonarqube

    参考其他文章,编译 构建 检查工具 参考:https://blog.csdn.net/lswnew/article/details/79193529 http://www.uml.org.cn/cod ...

  7. 持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知

    持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知 一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具 ...

  8. 持续集成工具Jenkins安装、部署、使用

    本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...

  9. Dubbo入门到精通学习笔记(五):持续集成管理平台之sonarqube代码质量管理平台的介绍与安装

    文章目录 SonarQube的介绍 SonarQube的安装 安装简介 详细安装过程 详细使用过程 SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质 ...

随机推荐

  1. get、post请求方式在postman中使用步骤

    1.get请求方式:不需要借助任何工具,在浏览器里面就可以发送请求,直接在浏览器里面输入访问      url?参数名=参数值  url?parma=abc&name=abcd 2.post请 ...

  2. django之admin配置

    要在admin内显示的表,在admin中进行注册,然后在登录admin后台,才可以对表进行操作例如:from django.contrib import adminfrom app01 import ...

  3. Dos拒绝服务Syn-Flood泛洪攻击--Smurf 攻击(一)

    Dos拒绝服务利用程序漏洞或一对一资源耗尽的Denial of Service 拒绝服务DDos 分布式拒绝服务 多对一 Syn-Flood泛洪攻击 发送syn包欺骗服务器建立半连接 攻击代码,利用s ...

  4. python 3 字典

    字典,是可变的无序集合,同时是一种以键值对为基本元素的可以存储各种数据类型的集合,用大括号({})表示字典的开始和结束,元素之间用(,)分隔. 键值对,由键(Key)和值(Value)组成,中间用冒号 ...

  5. 按正常步骤对github的仓库进行push自己本地的代码提示push rejected

    按正常步骤对github的仓库进行push自己本地的代码提示push rejected. 大概原因是:初始化项目时,远程仓库我建了README.md文件,而本地仓库与远程仓库尚未进行文件关联,因此需要 ...

  6. 熟悉ifos项目的记录吧

    1.首页关联的:在 default-navigation-model.xml里 2.输入框改成下拉列框 第一步,找到需要修改的view的包,新建一个view obj 第二步,在query里写上需要找的 ...

  7. Golang的Context介绍及其源码分析

    简介 在Go服务中,对于每个请求,都会起一个协程去处理.在处理协程中,也会起很多协程去访问资源,比如数据库,比如RPC,这些协程还需要访问请求维度的一些信息比如说请求方的身份,授权信息等等.当一个请求 ...

  8. Pandas 中的遍历与并行处理

    使用 pandas 处理数据时,遍历和并行处理是比较常见的操作了本文总结了几种不同样式的操作和并行处理方法. 1. 准备示例数据 import pandas as pd import numpy as ...

  9. 阿里内部推出Spring响应式微服务Boot2Cloud文档

    今天要给大家推荐的是Spring响应式微服务SpringBoot2+Spring5+SpringCloud实战的内容,将从目录.主要内容和面向的读者三部分给大家介绍,希望大家能够喜欢!!!(本文整理自 ...

  10. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...