zoukankan      html  css  js  c++  java
  • Jenkins+Sonar集成对代码进行持续检测

    介绍

    SonarQube(曾用名Sonar(声纳)[1])是一个开源代码质量管理系统。

    特征

    【以上来自维基百科】

    SonarQube 平台是 由 4 个 部分组成:

    • SonarQube Server
    • SonarQube Database (这次并没有关注这块)
    • SonarQube Plugins
    • SonarQube Scanner

    功能介绍:

    SonarQube Scanner在项目代码的本地去扫描代码最后发送到SonarQube Server

    SonarQube Plugins这次我理解的应该是IDE的插件,我们这次也用了Jenkins的SonarQube Plugins但是我理解这的这个应该单纯的去封装了扫描代码执行的命令。

    SonarQube Database是用来做数据持久化的,本次没有关注这块,使用的sonar内置的默认数据库。

    SonarQube Server是sonar的服务器端会把SonarQube Scanner发送的数据进行分析最后显示在web页面上。

    框架

    上图是理想状态下的架构,我们这次比较简单,思路是在Jenkins上配置源码管理git,给Jenkins安装SonarQube Plugins的插件,使用我们组的一个服务器当节点安装了SonarQube Scanner的环境,最后通过Jenkins手动选择分支触发,Jenkins会调用节点服务器去gitlab拉取我们的代码,使用SonarQube Scanner进行扫描之后,发送到SonarQube Server。后期打算做成在merge回dev分支的时候(PR)自动去构建这个过程,并添加gitlab的一些代码质量分析之类的操作.........

    部署

    1.安装jdk

    不管是SonarQube Scanner还是SonarQube Server都是依赖于jdk的,所以需要安装jdk,这里安装的是openJDK(JDK应该会更好,后面说),解压之后直接把到bin的路径复制下来添加到环境变量path里即可。(我这块是这样D:openjdk-11.0.2_windows-x64_binjdk-11.0.2in;)

    2.安装SonarQube Scanner

    因为我们的组的服务器是windows server 2008R2 SP1服务器,所以这块只说明Windows的。 

    我们组有API(.net)和nc3.0(angular)的项目需要扫描,而扫描.net的sonar比较特殊是基于MSbuild的,所以要安装SonarQube Scanner for MSBuild。

    SonarQube Scanner for MSBuild

    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild

    一般的SonarQube Scanner

    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

    下载下来之后解压,配置环境变量path

    就是这两个路径,其实如果只是和Jenkins去集成这里可以不用配置环境变量,因为Jenkins里配置SonarQube Plugins的时候会让你配置SonarQube Scanner 的路径。(亲测)

    3.安装代码编译的环境

    .Net framework 4.6以上版本

    安装时要注意.Net framework 4.6以上版本需要Windows Server 2008R2 SP1以上版本(注意是SP1)

    https://www.microsoft.com/en-us/download/details.aspx?id=48130

    NodeJS v6以上

    google或者百度自行解决(nc3.0的环境)

    https://nodejs.org

    MSBuild

    因为我们API代码是在VS2017里开发的所以MSBuild需要2017的MSBuild,安装MSBuild具体要看.net项目的C#语法版本(或者说是vs的版本,最好按照vs版本,因为其实自我感觉我们都不是很关注C#的语法版本,可能只知道vs那个版本支持什么语法,所以很多公司没有约束C#语法版本而是约束了vs的版本)。

    有网直接安装 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15

    没有网需要自己去做离线包,具体文档https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2019

    下载在线版的.exe,在根目录执行以下代码。

    .vs_buildtools__1829948457.1521995183.exe --layout . --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.NetCoreBuildTools --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.WebBuildTools --add Microsoft.VisualStudio.Workload.OfficeBuildTools --add Microsoft.VisualStudio.Workload.VCTools --lang en-US

    相关连接https://developercommunity.visualstudio.com/content/problem/303465/inability-to-install-build-tools-for-visual-studio.html

    4.安装Jenkins的插件

    SonarQube Plugins和MSbuild for Jenkins

    系统管理->管理插件  搜索并且安装下图两个插件

    SonarQube Plugins 里边会包含for MSbuild的功能

    这块遇到的问题是我们的服务器没有网,所以这块安装的时候是从高级里上传下载好的插件(.hpi)安装的(下载地址http://updates.jenkins-ci.org/download/plugins/

    坑:

    什么?听说你们的服务器也没网?那太好了。

    你以为这就完了吗?

    你会发现你上传的这个插件,安装的时候会报错。(傻了吧!!!)

    就像这样:

    这是因为你安装的插件有别的依赖,这时候你就需要打开详细找到截图上类似这样的url自己去手动下载依赖的插件并且按照上图的顺序去安装

    5.配置Jenkins插件

    设置MSBuild

    设置SonarQube Server地址

    系统管理 > 系统设置 > Add SonarQube > SonarQube servers 修改如下:

    设置SonarQube Scanner插件

    系统管理 >Global Tool Configuration

    这块要设置两个SonarQube Scanner for MSBuild和SonarQube Scanner

    这就是我之前说的不用在节点的机器上配置环境变量的原因

    6.构建项目

    新建>构建一个自由风格的软件项目

     

    sonar.projectKey指定sonar server上的key(唯一的)

    sonar.projectName指定sonar server上的Project的名称

    sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录)

    .Net项目

    可以试下效果了

  • 相关阅读:
    racktable安装过程
    racktables
    EM上的按钮是方框的问题
    install oracle
    记一次ORACLE无法启动登陆事故
    安装rlwrap-0.37.tar.gz
    centos7 安装oracle 11g数据库
    centos 7 安装mariadb
    centos7 lamp
    Linux安全之SSH 密钥创建及密钥登录
  • 原文地址:https://www.cnblogs.com/shitong/p/10763700.html
Copyright © 2011-2022 走看看