angular - 如何将 Angular 项目的 Jenkinsfile 与 Sonarqube 集成

标签 angular maven jenkins sonarqube jenkins-pipeline

我有一个 angularjs 项目。该项目有一个 Jenkinsfile(声明性管道),可以在推送完成后构建 jenkinsjob。我试图在此处包含 Sonar Action 以进行静态扫描。根据我的场景搜索了很多 Angular 项目。但我检查的大多数示例都有 pom.xml 文件(因为它们要么是与 java 相关的项目)。

我在根目录中编写了一个sonar-projects.properties并添加了所有必要的项目:

sonar.projectKey=apols:webproject
sonar.projectName=webproject
sonar.projectVersion=1.0.0
sonar.projectDescription=Static analysis for the AppName
sonar.sources=www
sonar.exclusions=**/node_modules/**,**/*.spec.ts,**/dist/**,**/docs/**,**/*.js,**/coverage/**
sonar.tests=www 
sonar.test.inclusions=**/*.spec.ts
sonar.ts.tslint.configPath=tslint.json
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.ts.coverage.lcovReportPath=coverage/lcov.info

我的Jenkinsfile Sonar 扫描部分 -

stage('Sonarqube') {
     steps {
        container('maven') {
            script {
               withSonarQubeEnv('SonarQube') {
                  sh 'mvn clean package sonar:sonar'
               }
               timeout(time: 10, unit: 'MINUTES') {
                    waitForQualityGate abortPipeline: true
               }
            }
        }
     }
}

正如你所看到的,我正在 jenkins 中使用 Maven 容器。

当 jenkins 作业运行时,当它在 Jenkinsfile 中执行此行时 - sh 'mvn clean package sonar:sonar' ,它会检查 pom.xml 文件并失败。那么我如何将其指向我的 sonar-projects.properties 。 请帮忙

最佳答案

您必须执行 native SonarQube Scanner,而不是适用于 Maven 的 SonarQube Scanner。

stage('Sonarqube') {
    steps {
        container('SonarQubeScanner') {
            withSonarQubeEnv('SonarQube') {
                sh "/usr/local/sonar-scanner"
            }
            timeout(time: 10, unit: 'MINUTES') {
                waitForQualityGate abortPipeline: true
            }
        }
    }
}

container('SonarQubeScanner')sh "/usr/local/sonar-scanner" 只是示例,但是有很多带有 SonarQube Scanner 的 docker 容器,请参阅Docker Hub .

了解更多关于Analyzing with SonarQube Scanner的信息.

如何在没有容器的情况下做到这一点:How to execute SonarQube scanner in Jenkins Declarative Pipeline without Maven and Docker

关于angular - 如何将 Angular 项目的 Jenkinsfile 与 Sonarqube 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54946420/

相关文章:

java - 由于 Maven 依赖关系,Map、List 不是通用的且 isEmpty 函数未定义

windows - Azure 上的自定义 Jenkins 从属镜像

maven-2 - 通过 Hudson 发布 Maven

Jenkins 没有触发远程构建选项

node.js - Mongoose 中的人龄虚拟属性(property)

angular - StaticInjectorError(AppModule) 错误

angular - HTML输入元素 : how to raise angular event handler after the text was changed

angular - 如果在表单标签集名称或设置独立错误中使用 ngModel

android - Selendroid 与 Maven : No such archiver: 'apk'

maven - 在 Maven 项目中查找包含类文件的 jar