【问题标题】:Sonar scanner report file with taskId and analysisId带有 taskId 和 analysisId 的声纳扫描仪报告文件
【发布时间】:2018-06-22 07:00:11
【问题描述】:

我对 JAVA 有什么

我使用 Jenkins 作为我的 CI/CD 服务器,我为我的 JAVA 项目创建了一个 Jenkinsfile,我使用了 maven 声纳插件来进行扫描和质量检查。 mvn sonar:sonar 命令在 target/sonar/report-task.txt 生成一个文件。该文件包含与扫描过程相关的信息,使用该信息我可以使用生成的 taskId 调用 SonarQube REST API,然后我可以使用 analysisId 调用 REST API 并根据质量条件确定管道是否损坏.

我想要的 Javascript(任何其他类型的项目)

我正在尝试为 Javascript 项目做类似的事情,但这次并使用命令行中的声纳扫描仪,但我意识到没有文件生成为 report-task.txt(我相信该文件仅由Maven 声纳插件)。所以我想知道是否有办法生成这种信息。

我确实需要 taskId 值,以便在扫描程序启动后动态调用 SonarQube REST API。

【问题讨论】:

  • 这里有一个问题:您的声纳扫描是否成功用于 Javascript 项目?

标签: sonarqube sonar-runner


【解决方案1】:

由于您使用的是 Jenkinsfile,因此无需手动执行此操作。来自the docs

node {
  stage('SCM') {
    git 'https://github.com/foo/bar.git'
  }
  stage('SonarQube analysis') {
    withSonarQubeEnv('My SonarQube Server') {
      sh 'mvn clean package sonar:sonar'
    } // SonarQube taskId is automatically attached to the pipeline context
  }
}

// No need to occupy a node
stage("Quality Gate"){
  timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout
    def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
    if (qg.status != 'OK') {
      error "Pipeline aborted due to quality gate failure: ${qg.status}"
    }
  }
}

如果您不使用 Maven 进行构建和分析,则只需根据需要插入正确的命令。

【讨论】:

  • 感谢您的回答浴只适用于 java 项目,但如果我想对 Javascript 应用程序或任何其他类型使用相同的过程会发生什么。我正在尝试做的是使用带有 SonarRunner(已安装扫描仪)的 Openshift Container,并使用属性文件或命令行来自定义项目属性。
  • 查看我的补充@Robert
【解决方案2】:

该文件包含与扫描过程相关的信息是: .scannerwork/report-task.txt

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 2019-07-19
    • 2017-08-25
    • 1970-01-01
    • 2017-08-19
    • 2017-12-25
    • 2017-04-27
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多