是否可以根据分析结果从终端获取 sonarqube 8.6 退出代码?

问题描述

大家好,我在 linux 上,想在本地运行 sonarqube 并根据分析结果获取退出代码

我像这样从 docker-compose 运行 SQ 服务器:

version: "3"
services:
  sonarqube:
    container_name: sonarqube
    image: sonarqube:latest
    ports:
      - "9000:9000"
      - "9092:9092"

然后使用节点运行 sonarqube-scanner:

const sonarqubeScanner = require('sonarqube-scanner');
sonarqubeScanner({
    serverUrl: 'http://localhost:9000',options : {
        'sonar.sources': '.','sonar.inclusions' : 'src/**',}
},() => {});

最后我在控制台上成功了,但没有退出代码

INFO: CPD Executor 4 files had no CPD blocks
INFO: CPD Executor Calculating CPD for 3 files
INFO: CPD Executor CPD calculation finished (done) | time=11ms
INFO: Analysis report generated in 74ms,dir size=97 KB
INFO: Analysis report compressed in 46ms,zip size=21 KB
INFO: Analysis report uploaded in 34ms
INFO: ANALYSIS SUCCESSFUL,you can browse http://localhost:9000/dashboard?id=foobar
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://localhost:9000/api/ce/task?id=example
INFO: Analysis total time: 18.668 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 19.616s
INFO: Final Memory: 12M/50M
INFO: ------------------------------------------------------------------------
[11:10:42] Analysis finished.

解决方法

声纳扫描仪返回扫描结果是不切实际的,因为客户可能希望看到很多细节。在 sonarqube 服务器中完成扫描后,将运行后台任务,该任务根据项目中设置的质量门中的准则生成基本统计数据。

通常,SonarQube 项目有一个“Webhook”值,用于指定将后台任务结果发布到的 url,该 url 通常在 Jenkins 中。

在 Jenkins 脚本管道作业中,“waitForQualityGate()”管道步骤用于等待接收该 webhook 调用。