如何将 angular 项目的 Jenkinsfile 与 Sonarqube 集成
How to integrate an angular project's Jenkinsfile with Sonarqube
我有一个 angularjs 项目。该项目有一个 Jenkinsfile(声明性管道),它可以在完成推送时构建 jenkinsjob。我正在尝试在此处包含一个用于静态扫描的 sonarqube 动作。在我的场景中搜索了很多 angular 个项目。但我检查的大多数示例都有 pom.xml 文件(因为它们要么是 java 相关项目)。
我在 root 中写了一个 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 的声纳扫描 部分 -
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 。
请帮助
您必须执行本机 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"
只是示例,但是有许多 docker 容器带有 SonarQube Scanner,请参阅 Docker Hub。
详细了解 Analyzing with SonarQube Scanner。
没有容器怎么办:
我有一个 angularjs 项目。该项目有一个 Jenkinsfile(声明性管道),它可以在完成推送时构建 jenkinsjob。我正在尝试在此处包含一个用于静态扫描的 sonarqube 动作。在我的场景中搜索了很多 angular 个项目。但我检查的大多数示例都有 pom.xml 文件(因为它们要么是 java 相关项目)。
我在 root 中写了一个 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 的声纳扫描 部分 -
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 。
请帮助
您必须执行本机 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"
只是示例,但是有许多 docker 容器带有 SonarQube Scanner,请参阅 Docker Hub。
详细了解 Analyzing with SonarQube Scanner。
没有容器怎么办: