Azure Devops集成 SonarQube检测代码质量

这篇具有很好参考价值的文章主要介绍了Azure Devops集成 SonarQube检测代码质量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 代码扫描,Azure,azure,devops,运维

过程2(配置agent & SonarQube)

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

配置Agent

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

配置Linux Agent

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

sudo apt-get update
sudo apt-get upgrade

azure devops 代码扫描,Azure,azure,devops,运维

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

sudo apt-get install wget

azure devops 代码扫描,Azure,azure,devops,运维
3.然后我们可以查看一下版本,验证是否安装成功。

wget --version

azure devops 代码扫描,Azure,azure,devops,运维

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

mkdir myagent && cd myagent

azure devops 代码扫描,Azure,azure,devops,运维

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

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

azure devops 代码扫描,Azure,azure,devops,运维

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

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

azure devops 代码扫描,Azure,azure,devops,运维

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

./config.sh

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维
azure devops 代码扫描,Azure,azure,devops,运维
azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

配置SonarQube

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

安装Docker
sudo apt  install docker.io

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

拉取SonarQube镜像
sudo docker pull sonarqube

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

验证SonarQube服务器

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

然后我们稍等一小会儿,访问:
azure devops 代码扫描,Azure,azure,devops,运维

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

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

出现如下图的界面就ok了。
azure devops 代码扫描,Azure,azure,devops,运维

azure devops 代码扫描,Azure,azure,devops,运维

过程3(Azure DevOps 集成SonarQube)

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

配置SonaeQube

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

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

azure devops 代码扫描,Azure,azure,devops,运维

配置AzureDevOps

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

azure devops 代码扫描,Azure,azure,devops,运维
azure devops 代码扫描,Azure,azure,devops,运维

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 代码扫描,Azure,azure,devops,运维

过程4(查看结果)

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

azure devops 代码扫描,Azure,azure,devops,运维
azure devops 代码扫描,Azure,azure,devops,运维文章来源地址https://www.toymoban.com/news/detail-792987.html

到了这里,关于Azure Devops集成 SonarQube检测代码质量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Azure DevOps构建CICD流水线

    Azure AKS Azure CR Azure DevOps .NET Core示例 Dockerfile deploy.yaml Java示例 Dockerfile deploy.yaml 注册Azure AD应用 打开Azure portal,导航到Azure AD 选择应用注册,点击新注册 输入应用名称,点击注册 创建客户端密码 分配应用订阅的参与者角色 导航到订阅,选择Access control(IAM),点击添加按钮,

    2024年02月09日
    浏览(89)
  • Azure DevOps Server 2022 (TFS 2022)

    时隔两年,微软公司再次发布Azure DevOps Server(之前名为TFS) 的最新新版本2022。 虽然现在还只是RC1版本,但是承袭近年来微软发布产品的系统,这个RC版本支持生产升级和技术支持,用户完全可以放心安装或升级。 相比Azure DevOps Server 2020,最新发布的这个版本主要在“交付计划

    2024年02月05日
    浏览(40)
  • Azure DevOps(三)Azure Pipeline 自动化将程序包上传到 Azure Blob Storage

    结合前几篇文章,我们了解到 Azure Pipeline 完美的解决了持续集成,自动编译。同时也兼顾了 Sonarqube 作为代码扫描工具。接下来另外一个问题出现了,Azure DevOps 由于有人员限制,项目上不能给非开发人员或者外包成员开权限,这个时候就需要将编译好的程序包上传到公共网盘

    2024年02月02日
    浏览(65)
  • Azure DevOps Server 2022.0.1升级手册

    Contents 1. 概述 2. 操作方法 2.1 安装操作系统 2.2 安装数据库 2.4 还原数据 2.3 安装和配置Azure DevOps Server 1. 概述 Azure DevOps Server 是微软公司经过20多年的持续开发,逐渐将需求管理、敏捷实践、源代码管理、持续集成等功能集成一体,实现应用软件生命周期全流程服务的技术平台

    2024年02月02日
    浏览(43)
  • Azure DevOps Server 数据还原方式三:增量还原

    Contents 1. 概述 2. 操作方式 2.1 创建共享文件夹,并将备份文件复制到共享文件夹中 2.2 还原数据 3 验证还原的数据库 3.1 方式一:核对工作项所在的表的数据 3.2 方式二:将数据库配置到应用层,在应用中验证数据 4. 常见问题: 4.1 不能使用localhost作为共享文件夹 4.2 还原数据

    2024年02月02日
    浏览(42)
  • Azure Devops上模版化K8s部署

    在2022年我们终于完成了主要业务系统上K8s的计划,在这里总结下我们上K8s时候的模版工程。   前提条件 本文不讨论K8s是什么,什么是容器化,为什么需要容器化,什么是微服务等这些基础内容,这些到处说的烂大街了。此类内容有兴趣可以看看微软系的介绍: 微服务体系架

    2024年02月02日
    浏览(47)
  • Azure DevOps Server 2022新功能:导入和导出到CSV文件,实现批量修改工作项

    Azure DevOps Server(之前名称为TFS)作为微软的软件研发管理平台产品,由于系统涉及到软件开发的全过程和多种角色,服务器中积累了大量的软件开发过程数据,例如需求、评审、Bug和测试用例等。在对这些数据进行批量操作(例如批量更新、导入、导出和数据分析)的过程中,进

    2024年02月05日
    浏览(48)
  • 代码质量检测-SonarQube

    CI/CD流水线完善计划, 增加代码质量检查作业,在开发代码合入前提前发现不安全问题,因此引入代码质量检测-SonarQube服务。 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成

    2024年01月24日
    浏览(42)
  • DevOps概念及搭建全过程(Jenkins、Harbor、SonarQube、K8s)

    在如今互联网的格局下,抢占市场变得尤为重要,因此敏捷开发越来越被大家所推崇。于是,慢慢的有了DevOps这个概念,大致意思是开发-运维一体化。 1.1 基本概念 可以看到上图是一个无穷大的一个符号,Dev对应开发,Ops对应运维。 DevOps的方式可以让公司能够更快地应对更

    2023年04月17日
    浏览(47)
  • 【项目实战】自定义设置Sonar的规则,要求DevOps工具链SonarQube只扫描指定模块

    开发微服务项目,很多会基于网络上现成开源的微服务框架进行二开,公司有单元测试覆盖率的要求,往往会使用SonarQube 来实现扫描代码的单元测试覆盖率,但是因为网络上现成开源的微服务框架很大部分是已经现成的代码,因此补充单元测试工作会很痛苦,于是,可以自定

    2024年02月14日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包