Azure Devops集成 SonarQube检测代码质量

Azure Devops 集成SonarQube

  • SonarQube介绍
    • 介绍
    • 支持范围
    • 原理
  • AzureDevops 配置与安装SonarQube
    • 背景介绍
      • 过程
    • 过程1(准备项目)
    • 过程2(配置agent & SonarQube)
      • 配置Agent
        • 配置Linux Agent
      • 配置SonarQube
        • 安装Docker
        • 拉取SonarQube镜像
        • Run SonarQube容器
      • 验证SonarQube服务器
    • 过程3(Azure DevOps 集成SonarQube)
      • 配置SonaeQube
      • 配置AzureDevOps
    • 过程4(查看结果)

SonarQube介绍

介绍

SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube.

支持范围

通过插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 、python等二十五种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同:对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。

SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 、DevOps插件等。比较常用的为 Gradle 和 Maven。

原理

SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理,以便进行有针对性的代码修复或重构。

AzureDevops 配置与安装SonarQube

前面大概介绍了SonarQube是什么,他可以帮我们来静态检测我们的项目代码质量。现在我们来具体实践一下吧。

背景介绍

本篇主要介绍一个使用
1.python写的一个项目。这个项目主要用来检测。
2.然后使用Azure DevOps 组织创建和一个项目,初始化一个存储库。
3.使用一台云 Ubuntu虚拟机当作编译机
4.在使用一台云 虚拟机作为SonarQube服务器(我们这里使用上面的编译机(Ubuntu虚拟机)作为服务器)。

过程

1.我们在本地准备一个python项目(其它语言的也可以),然后将项目push到我们准备的AzureDevOps上的存储库。
2.然后配置我们Azure 项目的编译机,配置好之后,安装Sonarqube。安装成功之后访问验证是否正常运行。
3.然后回到我们的AzureDevOps集成我们创建的SonarQube,(修改/创建)我们的管道。
4.查看SonarQube检测结果。

过程1(准备项目)

我们按照过程的步骤来慢慢配置:
首先我们创建一个python项目,不用很复杂,然后上传到我们的AzureRepos仓库中。

Azure Devops集成 SonarQube检测代码质量_第1张图片

过程2(配置agent & SonarQube)

我们准备一台AzureUbuntu虚拟机登录到虚拟机。

配置Agent

我之前的文章中讲到过配置Windos虚拟机,其实大同小异,今天我们看一下如何配置Linux虚拟机agent。
1.我们点开Azure DevOps -> Project Settings->Agent Pools-> Add pool-> New Agent->转到Linux

Azure Devops集成 SonarQube检测代码质量_第2张图片

因为我们配置的agent是Linux的所以我们需要转到Linux,我们可以采用URL的方式下载Agent配置文件。(点击下图标注即可复制URL)

Azure Devops集成 SonarQube检测代码质量_第3张图片

配置Linux Agent

1.然后我们回到虚拟机,首先我们更新一下镜像源

sudo apt-get update
sudo apt-get upgrade

2.wget URL 可以下载我们所需要的压缩文件
我们需要下载wget工具

sudo apt-get install wget

Azure Devops集成 SonarQube检测代码质量_第4张图片
3.然后我们可以查看一下版本,验证是否安装成功。

wget --version

Azure Devops集成 SonarQube检测代码质量_第5张图片

4.然后我们可以先创建一个文件夹,用于存储agent配置文件

mkdir myagent && cd myagent

在这里插入图片描述

5.然后我们在myagent文件夹内下载压缩包

sudo wget https://vstsagentpackage.azureedge.net/agent/3.230.0/vsts-agent-linux-x64-3.230.0.tar.gz

Azure Devops集成 SonarQube检测代码质量_第6张图片

6.解压缩然后运行config.sh文件

sudo tar zxvf vsts-agent-linux-x64-3.230.0.tar.gz
ls

在这里插入图片描述

7.运行config.sh文件开始配置

./config.sh

在这里插入图片描述

(1).第一步我们直接’Enter’接受一些协议什么的

Azure Devops集成 SonarQube检测代码质量_第7张图片

(2).输入我们DevOsserver的URL,到组织即可:
我们Azure DevOps的URL

https://dev.azure.com/MyOrgTeam/

在这里插入图片描述

(3).身份验证我们直接回车即可

在这里插入图片描述

(4).personal access token,我们返回Azure DevOps 如下图.
注意token只显示一次,页面关闭将不会在显示。

Azure Devops集成 SonarQube检测代码质量_第8张图片
Azure Devops集成 SonarQube检测代码质量_第9张图片
Azure Devops集成 SonarQube检测代码质量_第10张图片

(5).返回我们的配置页面,将创建好的token粘贴上去。然后回车输入代理池名称和代理名称

在这里插入图片描述

(6).工作目录,我们直接回车默认就好

在这里插入图片描述

这就配置成功了如下图,接下来我们就应该run起来我们的agent了

Azure Devops集成 SonarQube检测代码质量_第11张图片

  1. run我们的agent,查看配置是否成功
    我们的agent要运行起来,并且不可以关闭,才能编译。
./run.sh

我们可以看到已经开始监听了

Azure Devops集成 SonarQube检测代码质量_第12张图片

9.验证agent
我们可以返回AzureDevOps 查看我们Agent pool里面的agent,查看是否online

Azure Devops集成 SonarQube检测代码质量_第13张图片

配置SonarQube

我们可以另起一个窗口,因为如果编译的话我们run的agent窗口不能关闭
然后我们采用的是使用docker来拉取SonarQube然后跑的镜像,这样方便很多

安装Docker
sudo apt  install docker.io

Azure Devops集成 SonarQube检测代码质量_第14张图片

我们可以直接输入docker --version,如果安装成功则会显示版本。

在这里插入图片描述

拉取SonarQube镜像
sudo docker pull sonarqube

Azure Devops集成 SonarQube检测代码质量_第15张图片

Run SonarQube容器
sudo docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

在这里插入图片描述

验证SonarQube服务器

我们回到Azure portal,将我们Ubuntu虚拟机的nsg开始9000端口。

然后我们稍等一小会儿,访问:
Azure Devops集成 SonarQube检测代码质量_第16张图片

http://(你的虚拟机服务器IP):9000

默认账户名密码都是‘admin’,首次登陆进去之后,他会让你修改密码

出现如下图的界面就ok了。
Azure Devops集成 SonarQube检测代码质量_第17张图片

Azure Devops集成 SonarQube检测代码质量_第18张图片

过程3(Azure DevOps 集成SonarQube)

现在我们的项目源码,Agent和SonarQube都准备好了,只差集成了。

配置SonaeQube

我们回到SonarQube,导入我们的项目。

Azure Devops集成 SonarQube检测代码质量_第19张图片

然后我们需要输入三个参数,给一个名称,给一个AzureDevOps组织的URL,一个Personal access token(可以重新再创建一个)

Azure Devops集成 SonarQube检测代码质量_第20张图片

然后下一步你还可以输入这个token

Azure Devops集成 SonarQube检测代码质量_第21张图片

找到我们需要检测的项目,点击导入

Azure Devops集成 SonarQube检测代码质量_第22张图片

Azure Devops集成 SonarQube检测代码质量_第23张图片

我们导入成功后,点击从pipline分析

Azure Devops集成 SonarQube检测代码质量_第24张图片

然后我们返回DevOps里面,按照SonarQube里面的配置

Azure Devops集成 SonarQube检测代码质量_第25张图片

配置AzureDevOps

首先我们应该到市场中下载SonarQube插件,因为我们的AzureDevOps中默认是没有SonarQube 连接器插件的。
1.我们可以点击SonarQube给出教程的第一步链接( SonarQube extension)
然后点击 “Get it free”

Azure Devops集成 SonarQube检测代码质量_第26张图片
Azure Devops集成 SonarQube检测代码质量_第27张图片

2.第二部中没有什么难点,跟着步骤一点一点走就可以了。
3.第三部中看我们是什么语言的项目,我们是Python的
然后就点击python,他会给出相应的步骤。
步骤2配置好了之后我们会在这一步去修改Pipline Yaml
也是按照第三部中的步骤来做,最后我们pipline Yaml文件内容如下

# Python Function App to Linux on Azure
# Build a Python function app and deploy it to Azure as a Linux function app.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python

trigger:
- main
stages:
- stage: Build
  displayName: Build stage 
  jobs:
    - job:
      steps:
        - task: SonarQubePrepare@5
          inputs:
            SonarQube: 'Qube1124'
            scannerMode: 'CLI'
            configMode: 'manual'
            cliProjectKey: 'agentdemo_agentdemo_AYv_YDa_tVCgfdkXn_y4'
            cliProjectName: 'agentdemo'
            cliSources: '.'
        - bash: echo '中间编译部分,业务主体'
 
        - task: SonarQubeAnalyze@5
          inputs:
            jdkversion: 'JAVA_HOME_11_X64'
        - task: SonarQubePublish@5
          inputs:
            pollingTimeoutSec: '300'
            


然后我们运行pipline

Azure Devops集成 SonarQube检测代码质量_第28张图片

过程4(查看结果)

我们在pipline中已经发布了检测结果,只需要稍等,我们返回到SonarQube,再看
我们就发现结果就发布上来了,有关具体如何使用SonarQube请查看SonarQube官网。

Azure Devops集成 SonarQube检测代码质量_第29张图片
Azure Devops集成 SonarQube检测代码质量_第30张图片

你可能感兴趣的:(Azure,azure,devops,运维)